|
4 | 4 | */ |
5 | 5 | #pragma once |
6 | 6 |
|
7 | | -#include <smithy/identity/resolver/AwsCredentialIdentityResolver.h> |
8 | | - |
9 | 7 | #include <aws/core/auth/AWSCredentials.h> |
10 | 8 | #include <aws/core/auth/AWSCredentialsProviderChain.h> |
| 9 | +#include <smithy/identity/resolver/AwsCredentialIdentityResolver.h> |
11 | 10 |
|
12 | 11 | namespace smithy { |
13 | | - constexpr char ALLOC_ID[] = "DefaultAwsCredentialIdentityResolver"; |
14 | | - /** |
15 | | - * A smithy SigV4 AWS Credentials resolver wrapper on top of legacy SDK Credentials provider |
16 | | - * TODO: refactor into own signer using smithy design |
17 | | - */ |
18 | | - class DefaultAwsCredentialIdentityResolver : public AwsCredentialIdentityResolver { |
19 | | - protected: |
20 | | - |
21 | | - mutable std::shared_ptr<Aws::Auth::AWSCredentialsProviderChain> legacyChain_sp; |
22 | | - |
23 | | - public: |
24 | | - using SigV4AuthSchemeParameters = DefaultAuthSchemeResolverParameters; |
25 | | - |
26 | | - DefaultAwsCredentialIdentityResolver(): legacyChain_sp{Aws::MakeShared<Aws::Auth::DefaultAWSCredentialsProviderChain>(ALLOC_ID)}{ |
27 | | - |
28 | | - }; |
29 | | - |
30 | | - DefaultAwsCredentialIdentityResolver(const Aws::Auth::DefaultAWSCredentialsProviderChain& credChain): legacyChain_sp{Aws::MakeShared<Aws::Auth::DefaultAWSCredentialsProviderChain>(ALLOC_ID, credChain)}{ |
31 | | - |
32 | | - }; |
33 | | - |
34 | | - DefaultAwsCredentialIdentityResolver(const DefaultAwsCredentialIdentityResolver& other) = delete; |
35 | | - DefaultAwsCredentialIdentityResolver(DefaultAwsCredentialIdentityResolver&& other) noexcept = default; |
36 | | - DefaultAwsCredentialIdentityResolver& operator=(const DefaultAwsCredentialIdentityResolver& other) = delete; |
37 | | - DefaultAwsCredentialIdentityResolver& operator=(DefaultAwsCredentialIdentityResolver&& other) noexcept = default; |
38 | | - virtual ~DefaultAwsCredentialIdentityResolver() = default; |
39 | | - |
40 | | - DefaultAwsCredentialIdentityResolver(std::shared_ptr<Aws::Auth::AWSCredentialsProviderChain> providerChain): legacyChain_sp{providerChain} |
41 | | - { |
42 | | - assert(legacyChain_sp); |
43 | | - }; |
44 | | - |
45 | | - ResolveIdentityFutureOutcome getIdentity(const IdentityProperties& identityProperties, const AdditionalParameters& additionalParameters) override |
46 | | - { |
47 | | - AWS_UNREFERENCED_PARAM(identityProperties); |
48 | | - AWS_UNREFERENCED_PARAM(additionalParameters); |
49 | | - |
50 | | - auto legacyCreds = legacyChain_sp->GetAWSCredentials(); |
51 | | - |
52 | | - auto smithyCreds = Aws::MakeUnique<AwsCredentialIdentity>("DefaultAwsCredentialIdentityResolver", |
53 | | - legacyCreds.GetAWSAccessKeyId(), |
54 | | - legacyCreds.GetAWSSecretKey(), |
55 | | - legacyCreds.GetSessionToken().empty()? Aws::Crt::Optional<Aws::String>() : legacyCreds.GetSessionToken(), |
56 | | - legacyCreds.GetExpiration(), |
57 | | - legacyCreds.GetAccountId().empty()? Aws::Crt::Optional<Aws::String>() : legacyCreds.GetAccountId()); |
58 | | - |
59 | | - return ResolveIdentityFutureOutcome(std::move(smithyCreds)); |
60 | | - } |
61 | | - }; |
62 | | -} |
| 12 | +constexpr char ALLOC_ID[] = "DefaultAwsCredentialIdentityResolver"; |
| 13 | +/** |
| 14 | + * A smithy SigV4 AWS Credentials resolver wrapper on top of legacy SDK Credentials provider |
| 15 | + * TODO: refactor into own signer using smithy design |
| 16 | + */ |
| 17 | +class DefaultAwsCredentialIdentityResolver : public AwsCredentialIdentityResolver { |
| 18 | + protected: |
| 19 | + mutable std::shared_ptr<Aws::Auth::AWSCredentialsProviderChain> legacyChain_sp; |
| 20 | + |
| 21 | + public: |
| 22 | + using SigV4AuthSchemeParameters = DefaultAuthSchemeResolverParameters; |
| 23 | + |
| 24 | + DefaultAwsCredentialIdentityResolver() : legacyChain_sp{Aws::MakeShared<Aws::Auth::DefaultAWSCredentialsProviderChain>(ALLOC_ID)} {}; |
| 25 | + DefaultAwsCredentialIdentityResolver(const Aws::Client::ClientConfiguration::CredentialProviderConfiguration& config) |
| 26 | + : legacyChain_sp{Aws::MakeShared<Aws::Auth::DefaultAWSCredentialsProviderChain>(ALLOC_ID, config)} {}; |
| 27 | + DefaultAwsCredentialIdentityResolver(const Aws::Auth::DefaultAWSCredentialsProviderChain& credChain) |
| 28 | + : legacyChain_sp{Aws::MakeShared<Aws::Auth::DefaultAWSCredentialsProviderChain>(ALLOC_ID, credChain)} {}; |
| 29 | + |
| 30 | + DefaultAwsCredentialIdentityResolver(const DefaultAwsCredentialIdentityResolver& other) = delete; |
| 31 | + DefaultAwsCredentialIdentityResolver(DefaultAwsCredentialIdentityResolver&& other) noexcept = default; |
| 32 | + DefaultAwsCredentialIdentityResolver& operator=(const DefaultAwsCredentialIdentityResolver& other) = delete; |
| 33 | + DefaultAwsCredentialIdentityResolver& operator=(DefaultAwsCredentialIdentityResolver&& other) noexcept = default; |
| 34 | + virtual ~DefaultAwsCredentialIdentityResolver() = default; |
| 35 | + |
| 36 | + DefaultAwsCredentialIdentityResolver(std::shared_ptr<Aws::Auth::AWSCredentialsProviderChain> providerChain) |
| 37 | + : legacyChain_sp{providerChain} { |
| 38 | + assert(legacyChain_sp); |
| 39 | + }; |
| 40 | + |
| 41 | + ResolveIdentityFutureOutcome getIdentity(const IdentityProperties& identityProperties, |
| 42 | + const AdditionalParameters& additionalParameters) override { |
| 43 | + AWS_UNREFERENCED_PARAM(identityProperties); |
| 44 | + AWS_UNREFERENCED_PARAM(additionalParameters); |
| 45 | + |
| 46 | + auto legacyCreds = legacyChain_sp->GetAWSCredentials(); |
| 47 | + |
| 48 | + auto smithyCreds = Aws::MakeUnique<AwsCredentialIdentity>( |
| 49 | + "DefaultAwsCredentialIdentityResolver", legacyCreds.GetAWSAccessKeyId(), legacyCreds.GetAWSSecretKey(), |
| 50 | + legacyCreds.GetSessionToken().empty() ? Aws::Crt::Optional<Aws::String>() : legacyCreds.GetSessionToken(), |
| 51 | + legacyCreds.GetExpiration(), legacyCreds.GetAccountId().empty() ? Aws::Crt::Optional<Aws::String>() : legacyCreds.GetAccountId()); |
| 52 | + |
| 53 | + return ResolveIdentityFutureOutcome(std::move(smithyCreds)); |
| 54 | + } |
| 55 | +}; |
| 56 | +} // namespace smithy |
0 commit comments