nacx commented on code in PR #186:
URL: https://github.com/apache/jclouds/pull/186#discussion_r1365677001
##########
providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java:
##########
@@ -203,6 +240,24 @@ public String createStringToSign(HttpRequest request) {
return buffer.toString();
}
+ private void appendPayloadMetadataForSharedKey(HttpRequest request,
StringBuilder buffer) {
Review Comment:
Probably we can just early return if the request payload is null, and don't
check it every time?
##########
providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java:
##########
@@ -187,7 +209,22 @@ public String[] cutUri(URI uri) throws
IllegalArgumentException {
throw new IllegalArgumentException("there is neither ContainerName
nor BlobName in the URI path");
}
return result;
- }
+ }
+
+ public String createStringToSignForSharedKey(HttpRequest request) {
+ utils.logRequest(signatureLog, request, ">>");
+ StringBuilder buffer = new StringBuilder();
+ // re-sign the request
+ appendMethod(request, buffer);
+ appendPayloadMetadataForSharedKey(request, buffer);
+ appendHttpHeadersForSharedKey(request, buffer);
+ appendCanonicalizedHeaders(request, buffer);
+ appendCanonicalizedResourceForSharedKey(request, buffer);
+ if (signatureWire.enabled())
+ signatureWire.output(buffer.toString());
+ System.out.println(buffer);
Review Comment:
```suggestion
```
##########
providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java:
##########
@@ -216,6 +271,7 @@ public String calculateSignature(String toSign) throws
HttpException {
String signature = signString(toSign);
if (signatureWire.enabled())
signatureWire.input(Strings2.toInputStream(signature));
+ System.out.println(signature);
Review Comment:
Change this for logs if you really need this output, otherwise let's just
remove this.
##########
providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java:
##########
@@ -268,6 +329,51 @@ void appendCanonicalizedResource(HttpRequest request,
StringBuilder toSign) {
appendUriPath(request, toSign);
}
+ void appendCanonicalizedResourceForSharedKey(HttpRequest request,
StringBuilder toSign) {
+ // 1. Beginning with an empty string (""), append a forward slash (/),
followed by the name of
+ // the identity that owns the resource being accessed.
+ toSign.append("/").append(creds.get().identity);
+ // 2. Append the resource's encoded URI path
+ toSign.append(request.getEndpoint().getRawPath());
+ appendQueryParametersForSharedKey(request, toSign);
+ }
+
+ void appendQueryParametersForSharedKey(HttpRequest request, StringBuilder
toSign) {
+ // 3. Append each query parameter as a new line
+ Map<String, Multiset<String>> sortedParams = Maps.newTreeMap();
+ if (request.getEndpoint().getQuery() != null) {
+ String[] params = request.getEndpoint().getQuery().split("&");
+ for (String param : params) {
Review Comment:
Can you use something like?
```java
Map<String, String> params = Splitter.on('&')
.trimResults()
.omitEmptyStrings()
.withKeyValueSeparator('=')
.split(request.getEndpoint().getQuery());
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]