Repository: jclouds Updated Branches: refs/heads/2.0.x a9cc10c49 -> 1a23a1634
Resolves JCLOUDS-1261 by ensuring non-standard port numbers are in the host header that's used for the AWSv4 auth calculations. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/1a23a163 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/1a23a163 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/1a23a163 Branch: refs/heads/2.0.x Commit: 1a23a1634306fb64a81186946585b7eeab068a2c Parents: a9cc10c Author: Stephen Tomkinson <[email protected]> Authored: Tue May 9 16:28:00 2017 +0100 Committer: Andrew Gaul <[email protected]> Committed: Wed May 10 00:00:51 2017 -0700 ---------------------------------------------------------------------- .../s3/filters/Aws4SignerForAuthorizationHeader.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/1a23a163/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 e7ef172..9b8bf99 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 @@ -73,8 +73,9 @@ public class Aws4SignerForAuthorizationHeader extends Aws4SignerBase { Payload payload = request.getPayload(); - // get host from request endpoint. + // 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); @@ -119,6 +120,13 @@ 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 + } + } requestBuilder.replaceHeader(HttpHeaders.HOST, host); signedHeadersBuilder.put(HttpHeaders.HOST.toLowerCase(), host);
