From eff74374a1c1b424b1c6ee7fdc3bc53535f40b44 Mon Sep 17 00:00:00 2001 From: John DiSanti Date: Tue, 11 Apr 2023 08:04:20 -0700 Subject: [PATCH] Fix the `HttpSigner` trait args (#2558) This trait should have been taking a `PropertyBag` that originates from `HttpAuthOption` rather than the `ConfigBag`. --- aws/rust-runtime/aws-runtime/src/auth.rs | 6 +++--- .../smithy/rustsdk/SigV4AuthDecorator.kt | 18 +++++++----------- .../src/client/orchestrator.rs | 2 +- .../src/client/orchestrator/auth.rs | 2 +- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/aws/rust-runtime/aws-runtime/src/auth.rs b/aws/rust-runtime/aws-runtime/src/auth.rs index 4546d58ae..503a4bf2a 100644 --- a/aws/rust-runtime/aws-runtime/src/auth.rs +++ b/aws/rust-runtime/aws-runtime/src/auth.rs @@ -11,12 +11,12 @@ pub mod sigv4 { SignableRequest, SignatureLocation, SigningParams, SigningSettings, UriPathNormalizationMode, }; + use aws_smithy_http::property_bag::PropertyBag; use aws_smithy_runtime_api::client::identity::Identity; use aws_smithy_runtime_api::client::orchestrator::{ BoxError, HttpAuthScheme, HttpRequest, HttpRequestSigner, IdentityResolver, IdentityResolvers, }; - use aws_smithy_runtime_api::config_bag::ConfigBag; use aws_types::region::SigningRegion; use aws_types::SigningService; use std::time::{Duration, SystemTime}; @@ -197,9 +197,9 @@ pub mod sigv4 { &self, request: &mut HttpRequest, identity: &Identity, - cfg: &ConfigBag, + signing_properties: &PropertyBag, ) -> Result<(), BoxError> { - let operation_config = cfg + let operation_config = signing_properties .get::() .ok_or("missing operation signing config for SigV4")?; diff --git a/aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/SigV4AuthDecorator.kt b/aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/SigV4AuthDecorator.kt index 843d01e22..a0cba8142 100644 --- a/aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/SigV4AuthDecorator.kt +++ b/aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/SigV4AuthDecorator.kt @@ -119,16 +119,6 @@ private class AuthOperationRuntimePluginCustomization(private val codegenContext is OperationRuntimePluginSection.AdditionalConfig -> { val authSchemes = serviceIndex.getEffectiveAuthSchemes(codegenContext.serviceShape, section.operationShape) if (authSchemes.containsKey(SigV4Trait.ID)) { - rustTemplate( - """ - let auth_option_resolver = #{AuthOptionListResolver}::new( - vec![#{HttpAuthOption}::new(#{SIGV4_SCHEME_ID}, std::sync::Arc::new(#{PropertyBag}::new()))] - ); - ${section.configBagName}.set_auth_option_resolver(auth_option_resolver); - """, - *codegenScope, - ) - val unsignedPayload = section.operationShape.hasTrait() val doubleUriEncode = unsignedPayload || !disableDoubleEncode(codegenContext.serviceShape) val contentSha256Header = needsAmzSha256(codegenContext.serviceShape) @@ -144,11 +134,17 @@ private class AuthOperationRuntimePluginCustomization(private val codegenContext signing_options.normalize_uri_path = $normalizeUrlPath; signing_options.signing_optional = $signingOptional; signing_options.payload_override = #{payload_override}; - ${section.configBagName}.put(#{SigV4OperationSigningConfig} { + + let mut sigv4_properties = #{PropertyBag}::new(); + sigv4_properties.insert(#{SigV4OperationSigningConfig} { region: signing_region, service: signing_service, signing_options, }); + let auth_option_resolver = #{AuthOptionListResolver}::new( + vec![#{HttpAuthOption}::new(#{SIGV4_SCHEME_ID}, std::sync::Arc::new(sigv4_properties))] + ); + ${section.configBagName}.set_auth_option_resolver(auth_option_resolver); """, *codegenScope, "payload_override" to writable { diff --git a/rust-runtime/aws-smithy-runtime-api/src/client/orchestrator.rs b/rust-runtime/aws-smithy-runtime-api/src/client/orchestrator.rs index 1cb5f3400..fa16d0154 100644 --- a/rust-runtime/aws-smithy-runtime-api/src/client/orchestrator.rs +++ b/rust-runtime/aws-smithy-runtime-api/src/client/orchestrator.rs @@ -174,7 +174,7 @@ pub trait HttpRequestSigner: Send + Sync + Debug { &self, request: &mut HttpRequest, identity: &Identity, - cfg: &ConfigBag, + signing_properties: &PropertyBag, ) -> Result<(), BoxError>; } diff --git a/rust-runtime/aws-smithy-runtime/src/client/orchestrator/auth.rs b/rust-runtime/aws-smithy-runtime/src/client/orchestrator/auth.rs index 705ca9f44..38a5cd58a 100644 --- a/rust-runtime/aws-smithy-runtime/src/client/orchestrator/auth.rs +++ b/rust-runtime/aws-smithy-runtime/src/client/orchestrator/auth.rs @@ -44,7 +44,7 @@ pub(super) async fn orchestrate_auth( .map_err(construction_failure)?; return dispatch_phase.include_mut(|ctx| { let request = ctx.request_mut()?; - request_signer.sign_request(request, &identity, cfg)?; + request_signer.sign_request(request, &identity, scheme_properties)?; Result::<_, BoxError>::Ok(()) }); } -- GitLab