Skip to content

Commit 3634ff4

Browse files
authored
Change config for Sigv4a signing to not perform path normalization (#4430)
* Change config for Sigv4a signing to not perform path normalization, which causes signature mismatch errors with S3 service * Adds different paths to MRAP integration test
1 parent df47532 commit 3634ff4

File tree

3 files changed

+151
-105
lines changed

3 files changed

+151
-105
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "bugfix",
3+
"category": "AWS SDK for Java v2",
4+
"contributor": "",
5+
"description": "Do not instruct the CRT Sigv4a signer to do path normalization to avoid signature mismatch errors"
6+
}

core/auth-crt/src/main/java/software/amazon/awssdk/authcrt/signer/internal/SigningConfigProvider.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
public class SigningConfigProvider {
3333

3434
private static final Boolean DEFAULT_DOUBLE_URL_ENCODE = Boolean.TRUE;
35+
private static final Boolean DEFAULT_PATH_NORMALIZATION = Boolean.TRUE;
3536

3637
public SigningConfigProvider() {
3738
}
@@ -89,13 +90,20 @@ private AwsSigningConfig createPresigningConfig(ExecutionAttributes executionAtt
8990
private AwsSigningConfig createDefaultRequestConfig(ExecutionAttributes executionAttributes) {
9091
AwsSigningConfig signingConfig = createStringToSignConfig(executionAttributes);
9192

92-
signingConfig.setShouldNormalizeUriPath(true);
93+
if (executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNER_NORMALIZE_PATH) != null) {
94+
signingConfig.setShouldNormalizeUriPath(
95+
executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNER_NORMALIZE_PATH));
96+
} else {
97+
signingConfig.setShouldNormalizeUriPath(DEFAULT_PATH_NORMALIZATION);
98+
}
99+
93100
if (executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNER_DOUBLE_URL_ENCODE) != null) {
94-
signingConfig.setUseDoubleUriEncode(executionAttributes
95-
.getAttribute(AwsSignerExecutionAttribute.SIGNER_DOUBLE_URL_ENCODE));
101+
signingConfig.setUseDoubleUriEncode(
102+
executionAttributes.getAttribute(AwsSignerExecutionAttribute.SIGNER_DOUBLE_URL_ENCODE));
96103
} else {
97104
signingConfig.setUseDoubleUriEncode(DEFAULT_DOUBLE_URL_ENCODE);
98105
}
106+
99107
return signingConfig;
100108
}
101109

0 commit comments

Comments
 (0)