7#include <aws/core/auth/bearer-token-provider/AWSBearerTokenProviderBase.h>
8#include <aws/core/auth/bearer-token-provider/DefaultBearerTokenProviderChain.h>
9#include <aws/core/auth/bearer-token-provider/SSOBearerTokenProvider.h>
10#include <aws/core/auth/signer-provider/BearerTokenAuthSignerProvider.h>
11#include <aws/core/auth/signer/AWSAuthBearerSigner.h>
12#include <smithy/identity/identity/AwsBearerTokenIdentity.h>
13#include <smithy/identity/resolver/AwsIdentityResolverBase.h>
14#include <aws/core/platform/Environment.h>
15#include <aws/core/auth/bearer-token-provider/StaticBearerTokenProvider.h>
31 std::shared_ptr<Aws::Auth::AWSBearerTokenProviderBase>>
38 const std::shared_ptr<Aws::Auth::AWSBearerTokenProviderBase>
58 ResolveIdentityFutureOutcome
62 AWS_UNREFERENCED_PARAM(identityProperties);
63 AWS_UNREFERENCED_PARAM(additionalParameters);
64 for (
auto &bearerTokenProvider : m_providerChainLegacy)
66 if (!bearerTokenProvider)
69 "BearerTokenProvider",
70 "Unexpected nullptr in "
71 "DefaultBearerTokenProviderChain::m_providerChain");
74 "Unexpected nullptr in "
75 "BearerTokenProviderChain::m_providerChain",
78 auto bearerToken = bearerTokenProvider->GetAWSBearerToken();
79 if (!bearerToken.IsExpiredOrEmpty())
81 auto outcomePtr = Aws::MakeUnique<AwsBearerTokenIdentity>(
82 "BearerTokenProvider");
83 outcomePtr->token() = bearerToken.GetToken();
84 outcomePtr->expiration() = bearerToken.GetExpiration();
91 "No bearer token provider in chain found",
false);
95 std::shared_ptr<Aws::Auth::AWSBearerTokenProviderBase> provider)
97 m_providerChainLegacy.emplace_back(std::move(provider));
114 Aws::MakeShared<Aws::Auth::SSOBearerTokenProvider>(
"SSOBearerTokenProvider")}){};
118 Aws::MakeShared<Aws::Auth::SSOBearerTokenProvider>(
"SSOBearerTokenProvider", config.
profile)}){};
std::shared_ptr< Aws::Client::AWSAuthSigner > GetSigner(const Aws::String &signerName) const override
virtual ~AwsBearerTokenIdentityResolver()=default
void AddBearerTokenProvider(std::shared_ptr< Aws::Auth::AWSBearerTokenProviderBase > provider)
AwsBearerTokenIdentityResolver(const Aws::Auth::BearerTokenAuthSignerProvider &bearerTokenProvider)
Aws::Vector< std::shared_ptr< Aws::Auth::AWSBearerTokenProviderBase > > m_providerChainLegacy
AwsBearerTokenIdentityResolver(const Aws::Vector< std::shared_ptr< Aws::Auth::AWSBearerTokenProviderBase > > &providerChain)
virtual ResolveIdentityFutureOutcome getIdentity(const IdentityProperties &identityProperties, const AdditionalParameters &additionalParameters) override
AwsBearerTokenIdentityResolver()=default
AwsBearerTokenIdentityResolver(const std::shared_ptr< Aws::Auth::AWSBearerTokenProviderBase > &provider)
virtual ~DefaultAwsBearerTokenIdentityResolver()=default
DefaultAwsBearerTokenIdentityResolver(const Aws::Client::ClientConfiguration::CredentialProviderConfiguration &config)
DefaultAwsBearerTokenIdentityResolver()
Aws::UnorderedMap< Aws::String, Aws::Crt::Variant< Aws::String, bool > > AdditionalParameters
Aws::UnorderedMap< Aws::String, Aws::Crt::Variant< Aws::String, bool > > IdentityProperties
AWS_CORE_API const char BEARER_SIGNER[]
@ INVALID_PARAMETER_VALUE
std::vector< T, Aws::Allocator< T > > Vector