/** * Calculate the canonical string for a REST/HTTP request to S3 by only * including query parameters that are mentioned in SIGNED_PARAMETERS. * * @see RestUtils#makeS3CanonicalString(String, String, Request, String, boolean) */ public static <T> String makeS3CanonicalString(String method, String resource, SignableRequest<T> request, String expires) { return makeS3CanonicalString(method, resource, request, expires, null); }
public void sign(SignableRequest<?> request, AWSCredentials credentials) throws SdkClientException { AWSCredentials sanitizedCredentials = sanitizeCredentials(credentials); if ( sanitizedCredentials instanceof AWSSessionCredentials ) { addSessionCredentials(request, (AWSSessionCredentials) sanitizedCredentials); } String expirationInSeconds = Long.toString(expiration.getTime() / 1000L); String canonicalString = RestUtils.makeS3CanonicalString( httpVerb, resourcePath, request, expirationInSeconds); String signature = super.signAndBase64Encode(canonicalString, sanitizedCredentials.getAWSSecretKey(), SigningAlgorithm.HmacSHA1); request.addParameter("AWSAccessKeyId", sanitizedCredentials.getAWSAccessKeyId()); request.addParameter("Expires", expirationInSeconds); request.addParameter("Signature", signature); }
Date date = getSignatureDate(timeOffset); request.addHeader(Headers.DATE, ServiceUtils.formatRfc822Date(date)); String canonicalString = RestUtils.makeS3CanonicalString(httpVerb, encodedResourcePath, request, null, additionalQueryParamsToSign); log.debug("Calculated string to sign:\n\"" + canonicalString + "\"");
/** * Calculate the canonical string for a REST/HTTP request to S3. When * expires is non-null, it will be used instead of the Date header. * * @param method the HTTP verb. * @param resource the HTTP-encoded resource path. * @param request the request to be canonicalized. * @param expires when expires is non-null, * it will be used instead of the Date header. * @param <T> the class type of the request. * @return The canonical string representation for the given S3 request. */ public static <T> String makeS3CanonicalString(String method, String resource, Request<T> request, String expires) { return makeS3CanonicalString(method, resource, request, expires, null); }
@Override public void sign(Request<?> request, AWSCredentials credentials) { AWSCredentials sanitizedCredentials = sanitizeCredentials(credentials); if (sanitizedCredentials instanceof AWSSessionCredentials) { addSessionCredentials(request, (AWSSessionCredentials) sanitizedCredentials); } String expirationInSeconds = Long.toString(expiration.getTime() / TIME_TO_SECONDS); String canonicalString = RestUtils.makeS3CanonicalString( httpVerb, resourcePath, request, expirationInSeconds); String signature = super.signAndBase64Encode(canonicalString, sanitizedCredentials.getAWSSecretKey(), SigningAlgorithm.HmacSHA1); request.addParameter("AWSAccessKeyId", sanitizedCredentials.getAWSAccessKeyId()); request.addParameter("Expires", expirationInSeconds); request.addParameter("Signature", signature); }
@Test public void testNullHeaderValue() { Request<?> request = new DefaultRequest<Object>("s3"); request.addHeader("x-amz-test", null); String canonicalString = RestUtils.makeS3CanonicalString( "PUT", "/bucket/key", request, null); Assert.assertEquals( "PUT\n\n\nx-amz-test:\n/bucket/key", canonicalString); } }
/** * Tests that the canonicalized request includes all the query parameters * when signAllQueryParams is set to true. */ @Test public void testCanonicalStringIncludingAllParameters() throws Exception { final DefaultRequest<Void> request = new DefaultRequest<Void>("service"); request.addParameter("x-amz-foo", "bar"); request.addParameter("logging", "true"); request.addParameter("fake", "fake"); // additionalQueryParamsToSign = ["fake"] String canonicalString = RestUtils.makeS3CanonicalString("GET", "resource", request, null, Arrays.asList("fake")); assertTrue(canonicalString.contains("x-amz-foo:bar")); assertTrue(canonicalString.contains("logging=true")); assertTrue(canonicalString.contains("fake=")); // additionalQueryParamsToSign = ["non-existent-param"] canonicalString = RestUtils.makeS3CanonicalString("GET", "resource", request, null, Arrays.asList("non-existent-param")); assertTrue(canonicalString.contains("x-amz-foo:bar")); assertTrue(canonicalString.contains("logging=true")); assertFalse(canonicalString.contains("fake=")); } }
/** * Calculate the canonical string for a REST/HTTP request to S3 by only * including query parameters that are mentioned in SIGNED_PARAMETERS. * * @see RestUtils#makeS3CanonicalString(String, String, Request, String, boolean) */ public static <T> String makeS3CanonicalString(String method, String resource, SignableRequest<T> request, String expires) { return makeS3CanonicalString(method, resource, request, expires, null); }
/** * Tests that we correctly include all appropriate parameters in the * canonical string to sign. */ @Test public void testCanonicalStringToSignParameters() throws Exception { final DefaultRequest<Void> request = new DefaultRequest<Void>("service"); request.addParameter("x-amz-foo", "bar"); request.addParameter("logging", "true"); request.addParameter("fake", "fake"); final String canonicalString = RestUtils.makeS3CanonicalString("GET", "resource", request, null); assertTrue(canonicalString.contains("x-amz-foo:bar")); assertTrue(canonicalString.contains("logging=true")); assertFalse(canonicalString.contains("fake=")); }
/** * Calculate the canonical string for a REST/HTTP request to S3. When * expires is non-null, it will be used instead of the Date header. * * @param method the HTTP verb. * @param resource the HTTP-encoded resource path. * @param request the request to be canonicalized. * @param expires when expires is non-null, * it will be used instead of the Date header. * @param <T> the class type of the request. * @return The canonical string representation for the given S3 request. */ public static <T> String makeS3CanonicalString(String method, String resource, Request<T> request, String expires) { return makeS3CanonicalString(method, resource, request, expires, null); }
final String canonicalString = RestUtils.makeS3CanonicalString(httpVerb, encodedResourcePath, request, null, additionalQueryParamsToSign); log.debug("Calculated string to sign:\n\"" + canonicalString + "\"");
public void sign(SignableRequest<?> request, AWSCredentials credentials) throws SdkClientException { AWSCredentials sanitizedCredentials = sanitizeCredentials(credentials); if ( sanitizedCredentials instanceof AWSSessionCredentials ) { addSessionCredentials(request, (AWSSessionCredentials) sanitizedCredentials); } String expirationInSeconds = Long.toString(expiration.getTime() / 1000L); String canonicalString = RestUtils.makeS3CanonicalString( httpVerb, resourcePath, request, expirationInSeconds); String signature = super.signAndBase64Encode(canonicalString, sanitizedCredentials.getAWSSecretKey(), SigningAlgorithm.HmacSHA1); request.addParameter("AWSAccessKeyId", sanitizedCredentials.getAWSAccessKeyId()); request.addParameter("Expires", expirationInSeconds); request.addParameter("Signature", signature); }
@Override public void sign(Request<?> request, AWSCredentials credentials) { AWSCredentials sanitizedCredentials = sanitizeCredentials(credentials); if (sanitizedCredentials instanceof AWSSessionCredentials) { addSessionCredentials(request, (AWSSessionCredentials) sanitizedCredentials); } String expirationInSeconds = Long.toString(expiration.getTime() / TIME_TO_SECONDS); String canonicalString = RestUtils.makeS3CanonicalString( httpVerb, resourcePath, request, expirationInSeconds); String signature = super.signAndBase64Encode(canonicalString, sanitizedCredentials.getAWSSecretKey(), SigningAlgorithm.HmacSHA1); request.addParameter("AWSAccessKeyId", sanitizedCredentials.getAWSAccessKeyId()); request.addParameter("Expires", expirationInSeconds); request.addParameter("Signature", signature); }
Date date = getSignatureDate(timeOffset); request.addHeader(Headers.DATE, ServiceUtils.formatRfc822Date(date)); String canonicalString = RestUtils.makeS3CanonicalString(httpVerb, encodedResourcePath, request, null, additionalQueryParamsToSign); log.debug("Calculated string to sign:\n\"" + canonicalString + "\"");
final String canonicalString = RestUtils.makeS3CanonicalString(httpVerb, encodedResourcePath, request, null, additionalQueryParamsToSign); log.debug("Calculated string to sign:\n\"" + canonicalString + "\"");