@Override public Date toDate(String date) throws IllegalArgumentException { return dateService.rfc1123DateParse(date); }
@Override public Date toDate(String date) throws IllegalArgumentException { return dateService.rfc1123DateParse(date); }
@Override public Date toDate(String date) throws IllegalArgumentException { return dateService.rfc1123DateParse(date); }
@Override public Date toDate(String date) throws IllegalArgumentException { return dateService.rfc1123DateParse(date); }
@Override public Date toDate(String date) throws IllegalArgumentException { return dateService.rfc1123DateParse(date); }
@Override public Date toDate(String date) throws IllegalArgumentException { return dateService.rfc1123DateParse(date); }
private HttpRequest signForTemporaryAccess(HttpRequest request, long timeInSeconds) { // Update the 'DATE' header String dateString = request.getFirstHeaderOrNull(HttpHeaders.DATE); if (dateString == null) { dateString = timeStampProvider.get(); } Date date = dateService.rfc1123DateParse(dateString); String expiration = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(date.getTime()) + timeInSeconds); HttpRequest.Builder<?> builder = request.toBuilder().replaceHeader(HttpHeaders.DATE, expiration); String stringToSign = authSigner.createStringToSign(builder.build()); // We MUST encode the signature because addQueryParam internally _always_ decodes values // and if we don't encode the signature here, the decoding may change the signature. For e.g. // any '+' characters in the signature will be converted to space ' ' on decoding. String signature = authSigner.sign(stringToSign); try { signature = URLEncoder.encode(signature, Charsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new IllegalStateException("Bad encoding on input: " + signature, e); } HttpRequest ret = builder.addQueryParam(HttpHeaders.EXPIRES, expiration) .addQueryParam("AWSAccessKeyId", identity) // Signature MUST be the last parameter because if it isn't, even encoded '+' values in the // signature will be converted to a space by a subsequent addQueryParameter. // See HttpRequestTest.testAddBase64AndUrlEncodedQueryParams for more details. .addQueryParam(TEMPORARY_SIGNATURE_PARAM, signature) .build(); return ret; } }
private HttpRequest sign(String method, String path, long timeInSeconds) { Date now = dateService.rfc1123DateParse(timeStampProvider.get()); String expires = String.valueOf(now.getTime() / 1000 + timeInSeconds); String stringToSign = method + "\n" + path + "\n" + identity + "\n" + expires; return HttpRequest.builder() .method(method) .endpoint(Uris.uriBuilder(endpoint.getScheme() + "://" + endpoint.getHost()).appendPath(path).build()) .addQueryParam("uid", identity) .addQueryParam("expires", expires) .addQueryParam("signature", signer.calculateSignature(stringToSign)) .build(); } }
private HttpRequest sign(String method, String path, long timeInSeconds) { Date now = dateService.rfc1123DateParse(timeStampProvider.get()); String expires = String.valueOf(now.getTime() / 1000 + timeInSeconds); String stringToSign = method + "\n" + path + "\n" + identity + "\n" + expires; return HttpRequest.builder() .method(method) .endpoint(Uris.uriBuilder(endpoint.getScheme() + "://" + endpoint.getHost()).appendPath(path).build()) .addQueryParam("uid", identity) .addQueryParam("expires", expires) .addQueryParam("signature", signer.calculateSignature(stringToSign)) .build(); } }
private HttpRequest signForTemporaryAccess(HttpRequest request, long timeInSeconds) { // Update the 'DATE' header String dateString = request.getFirstHeaderOrNull(HttpHeaders.DATE); if (dateString == null) { dateString = timeStampProvider.get(); } Date date = dateService.rfc1123DateParse(dateString); String expiration = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(date.getTime()) + timeInSeconds); HttpRequest.Builder<?> builder = request.toBuilder().replaceHeader(HttpHeaders.DATE, expiration); String stringToSign = authSigner.createStringToSign(builder.build()); String signature = authSigner.sign(stringToSign); HttpRequest ret = builder.addQueryParam(HttpHeaders.EXPIRES, expiration) .addQueryParam("AWSAccessKeyId", identity) // Signature MUST be the last parameter because if it isn't, even encoded '+' values in the // signature will be converted to a space by a subsequent addQueryParameter. // See HttpRequestTest.testAddBase64AndUrlEncodedQueryParams for more details. .addQueryParam(TEMPORARY_SIGNATURE_PARAM, signature) .build(); return ret; } }
private HttpRequest signForTemporaryAccess(HttpRequest request, long timeInSeconds) { // Update the 'DATE' header String dateString = request.getFirstHeaderOrNull(HttpHeaders.DATE); if (dateString == null) { dateString = timeStampProvider.get(); } Date date = dateService.rfc1123DateParse(dateString); String expiration = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(date.getTime()) + timeInSeconds); HttpRequest.Builder<?> builder = request.toBuilder().replaceHeader(HttpHeaders.DATE, expiration); String stringToSign = authSigner.createStringToSign(builder.build()); String signature = authSigner.sign(stringToSign); HttpRequest ret = builder.addQueryParam(HttpHeaders.EXPIRES, expiration) .addQueryParam("AWSAccessKeyId", identity) // Signature MUST be the last parameter because if it isn't, even encoded '+' values in the // signature will be converted to a space by a subsequent addQueryParameter. // See HttpRequestTest.testAddBase64AndUrlEncodedQueryParams for more details. .addQueryParam(TEMPORARY_SIGNATURE_PARAM, signature) .build(); return ret; } }
@Override public HttpRequest signForTemporaryAccess(HttpRequest request, long timeInSeconds) { // Update the 'DATE' header String dateString = request.getFirstHeaderOrNull(HttpHeaders.DATE); if (dateString == null) { dateString = timeStampProvider.get(); } Date date = dateService.rfc1123DateParse(dateString); String expiration = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(date.getTime()) + timeInSeconds); HttpRequest.Builder<?> builder = request.toBuilder() .removeHeader(HttpHeaders.AUTHORIZATION) .replaceHeader(HttpHeaders.DATE, expiration); String stringToSign = createStringToSign(builder.build()); String signature = sign(stringToSign); HttpRequest ret = builder .addQueryParam(HttpHeaders.EXPIRES, expiration) .addQueryParam("AWSAccessKeyId", creds.get().identity) // Signature MUST be the last parameter because if it isn't, even encoded '+' values in the // signature will be converted to a space by a subsequent addQueryParameter. // See HttpRequestTest.testAddBase64AndUrlEncodedQueryParams for more details. .addQueryParam(S3Constants.TEMPORARY_SIGNATURE_PARAM, signature) .removeHeader(HttpHeaders.DATE) // remove signer created by RestAnnotationProcessor .filters(ImmutableList.<HttpRequestFilter>of()) .build(); return ret; } }
@Override public HttpRequest signForTemporaryAccess(HttpRequest request, long timeInSeconds) { // Update the 'DATE' header String dateString = request.getFirstHeaderOrNull(HttpHeaders.DATE); if (dateString == null) { dateString = timeStampProvider.get(); } Date date = dateService.rfc1123DateParse(dateString); String expiration = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(date.getTime()) + timeInSeconds); HttpRequest.Builder<?> builder = request.toBuilder() .removeHeader(HttpHeaders.AUTHORIZATION) .replaceHeader(HttpHeaders.DATE, expiration); String stringToSign = createStringToSign(builder.build()); String signature = sign(stringToSign); HttpRequest ret = builder .addQueryParam(HttpHeaders.EXPIRES, expiration) .addQueryParam("AWSAccessKeyId", creds.get().identity) // Signature MUST be the last parameter because if it isn't, even encoded '+' values in the // signature will be converted to a space by a subsequent addQueryParameter. // See HttpRequestTest.testAddBase64AndUrlEncodedQueryParams for more details. .addQueryParam(S3Constants.TEMPORARY_SIGNATURE_PARAM, signature) .removeHeader(HttpHeaders.DATE) // remove signer created by RestAnnotationProcessor .filters(ImmutableList.<HttpRequestFilter>of()) .build(); return ret; } }
Date now = dateService.rfc1123DateParse(nowString); Date expiration = new Date(now.getTime() + TimeUnit.SECONDS.toMillis(expires)); String iso8601 = dateService.iso8601SecondsDateFormat(expiration);