Repository: jclouds Updated Branches: refs/heads/master 6452960c7 -> 89ae3b4fa
Add logic from JCLOUDS-1261 to the other 2 types of Aws4 signer. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/89ae3b4f Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/89ae3b4f Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/89ae3b4f Branch: refs/heads/master Commit: 89ae3b4fa6b64deeea45fabb3ca151ca200872e8 Parents: 6452960 Author: Stephen Tomkinson <[email protected]> Authored: Wed May 10 11:41:23 2017 +0100 Committer: Andrew Gaul <[email protected]> Committed: Wed May 10 10:09:22 2017 -0700 ---------------------------------------------------------------------- .../java/org/jclouds/s3/filters/Aws4SignerBase.java | 16 ++++++++++++++++ .../filters/Aws4SignerForAuthorizationHeader.java | 9 +-------- .../s3/filters/Aws4SignerForChunkedUpload.java | 1 + .../s3/filters/Aws4SignerForQueryString.java | 1 + 4 files changed, 19 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/89ae3b4f/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java index 1348e22..c30ee46 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java +++ b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java @@ -133,6 +133,22 @@ public abstract class Aws4SignerBase { dateFormat.setTimeZone(GMT); } + protected static String hostHeaderFor(URI endpoint) { + String scheme = endpoint.getScheme(); + String host = endpoint.getHost(); + int port = endpoint.getPort(); + + // if the port is defined and doesn't match the URI scheme + if (port != -1) { + if (("http".equalsIgnoreCase(scheme) && port != 80) || + ("https".equalsIgnoreCase(scheme) && port != 443)) { + host += ":" + port; // append the port number to the hostname + } + } + + return host; // else just use the original hostname + } + protected String getContentType(HttpRequest request) { Payload payload = request.getPayload(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/89ae3b4f/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java index 9b8bf99..258c3a7 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java +++ b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java @@ -75,7 +75,6 @@ public class Aws4SignerForAuthorizationHeader extends Aws4SignerBase { // get host & port from request endpoint. String host = request.getEndpoint().getHost(); - int port = request.getEndpoint().getPort(); Date date = timestampProvider.get(); String timestamp = timestampFormat.format(date); @@ -120,13 +119,7 @@ public class Aws4SignerForAuthorizationHeader extends Aws4SignerBase { } // host - // if the port is defined and doesn't match the URI scheme - if (port != -1) { - if (("http".equalsIgnoreCase(request.getEndpoint().getScheme()) && port != 80) || - ("https".equalsIgnoreCase(request.getEndpoint().getScheme()) && port != 443)) { - host += ":" + port; // append the port number to the hostname - } - } + host = hostHeaderFor(request.getEndpoint()); requestBuilder.replaceHeader(HttpHeaders.HOST, host); signedHeadersBuilder.put(HttpHeaders.HOST.toLowerCase(), host); http://git-wip-us.apache.org/repos/asf/jclouds/blob/89ae3b4f/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java index bd455e9..8729054 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java +++ b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java @@ -155,6 +155,7 @@ public class Aws4SignerForChunkedUpload extends Aws4SignerBase { } // host + host = hostHeaderFor(request.getEndpoint()); requestBuilder.replaceHeader(HttpHeaders.HOST, host); signedHeadersBuilder.put(HttpHeaders.HOST.toLowerCase(), host); http://git-wip-us.apache.org/repos/asf/jclouds/blob/89ae3b4f/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForQueryString.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForQueryString.java b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForQueryString.java index 2f1abe4..537e66c 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForQueryString.java +++ b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForQueryString.java @@ -102,6 +102,7 @@ public class Aws4SignerForQueryString extends Aws4SignerBase { // For added security, you should sign as many headers as possible. // HOST + host = hostHeaderFor(request.getEndpoint()); signedHeadersBuilder.put("host", host); ImmutableMap<String, String> signedHeaders = signedHeadersBuilder.build();
