Repository: jclouds
Updated Branches:
  refs/heads/master 5b2aca103 -> 15d27da73


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/15d27da7
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/15d27da7
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/15d27da7

Branch: refs/heads/master
Commit: 15d27da73980ed753f8435e43cabd9f74bc79095
Parents: 5b2aca1
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:14 2017 -0700

----------------------------------------------------------------------
 .../s3/filters/Aws4SignerForAuthorizationHeader.java      | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/15d27da7/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);
 

Reply via email to