From 9d8a03d2ecdd503e8a9efd958c6a5a2007679cb4 Mon Sep 17 00:00:00 2001 From: Matt Muller Date: Thu, 27 Apr 2023 18:50:22 -0400 Subject: [PATCH 1/2] Add disable normalize path as default for s3 signing --- gems/aws-sdk-core/lib/aws-sdk-core/endpoints.rb | 6 +++++- gems/aws-sdk-core/lib/aws-sdk-core/plugins/sign.rb | 1 + gems/aws-sdk-core/spec/aws/endpoints_spec.rb | 8 +++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gems/aws-sdk-core/lib/aws-sdk-core/endpoints.rb b/gems/aws-sdk-core/lib/aws-sdk-core/endpoints.rb index d56b31eb339..b35cfe5976b 100644 --- a/gems/aws-sdk-core/lib/aws-sdk-core/endpoints.rb +++ b/gems/aws-sdk-core/lib/aws-sdk-core/endpoints.rb @@ -39,7 +39,11 @@ def default_auth_scheme(context) auth_scheme = { 'name' => 'sigv4' } merge_signing_defaults(auth_scheme, context.config) when 's3', 's3v4' - auth_scheme = { 'name' => 'sigv4', 'disableDoubleEncoding' => true } + auth_scheme = { + 'name' => 'sigv4', + 'disableDoubleEncoding' => true, + 'disableNormalizePath' => true + } merge_signing_defaults(auth_scheme, context.config) when 'bearer' { 'name' => 'bearer' } diff --git a/gems/aws-sdk-core/lib/aws-sdk-core/plugins/sign.rb b/gems/aws-sdk-core/lib/aws-sdk-core/plugins/sign.rb index 6ce5a78186d..607a57cb941 100644 --- a/gems/aws-sdk-core/lib/aws-sdk-core/plugins/sign.rb +++ b/gems/aws-sdk-core/lib/aws-sdk-core/plugins/sign.rb @@ -108,6 +108,7 @@ def initialize(auth_scheme, config, region_override = nil) credentials_provider: config.credentials, signing_algorithm: scheme_name.to_sym, uri_escape_path: !!!auth_scheme['disableDoubleEncoding'], + normalize_path: !!!auth_scheme['disableNormalizePath'], unsigned_headers: %w[content-length user-agent x-amzn-trace-id] ) rescue Aws::Sigv4::Errors::MissingCredentialsError diff --git a/gems/aws-sdk-core/spec/aws/endpoints_spec.rb b/gems/aws-sdk-core/spec/aws/endpoints_spec.rb index f5b5d8b6e30..b80224ffb96 100644 --- a/gems/aws-sdk-core/spec/aws/endpoints_spec.rb +++ b/gems/aws-sdk-core/spec/aws/endpoints_spec.rb @@ -94,7 +94,13 @@ def expect_auth_scheme(auth_scheme) let(:signature_version) { auth_type } it 'signs with sigv4 with double encoding' do - expect_auth_scheme({ 'name' => 'sigv4', 'disableDoubleEncoding' => true }) + expect_auth_scheme( + { + 'name' => 'sigv4', + 'disableDoubleEncoding' => true, + 'disableNormalizePath' => true + } + ) client.operation end end From dd46a2cbe1107707bd105acd07f47c1fe6c1fafe Mon Sep 17 00:00:00 2001 From: Matt Muller Date: Thu, 27 Apr 2023 18:54:55 -0400 Subject: [PATCH 2/2] Add changelog [ci skip] --- gems/aws-sdk-core/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gems/aws-sdk-core/CHANGELOG.md b/gems/aws-sdk-core/CHANGELOG.md index 5534fc798b6..05b3894b5a3 100644 --- a/gems/aws-sdk-core/CHANGELOG.md +++ b/gems/aws-sdk-core/CHANGELOG.md @@ -1,6 +1,8 @@ Unreleased Changes ------------------ +* Issue - Fix signing for S3/S3 Control and `aws-crt` gem. + 3.171.0 (2023-03-22) ------------------