Maksim Hadalau created JCLOUDS-1631: ---------------------------------------
Summary: AWS S3, sign for authorization header failed if query part contains special chars Key: JCLOUDS-1631 URL: https://issues.apache.org/jira/browse/JCLOUDS-1631 Project: jclouds Issue Type: Bug Components: jclouds-blobstore Affects Versions: 2.5.0 Reporter: Maksim Hadalau Problem description: Can not list blobs for aws-s3 provider if prefix contains special chars %/& Steps to reproduce: try to list blobs with following prefix: "Folder (`~!@#$%^&*-_+[]'|<>.?) Name/" Actual behavior: Error: URLDecoder: Incomplete trailing escape (%) pattern Expected behavior: provided prefix must be listed Problem location: `AWSRequestAuthorizeSignatureV4.signForAuthorizationHeader()` Multimap<String, String> queryMap = queryParser().apply(request.getEndpoint().getQuery()); request.getEndpoint().getQuery() - returns a decoded query string however queryParser() require encoded one Fix: Multimap<String, String> queryMap = queryParser().apply(request.getEndpoint().getRawQuery()); When jclouds generates a request to the AWS it encodes prefix (encoding all special chars in it, including % and &), however calling `getQuery()` returns decoded version of query string which lead to unpredictable behavior. P.S. required patch in 2.5.x if possible -- This message was sent by Atlassian Jira (v8.20.10#820010)