Lesson 35 - Get Compute Auth Token Working
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <smithy/identity/resolver/AwsCredentialIdentityResolver.h>
|
||||
|
||||
#include <aws/core/auth/AWSCredentials.h>
|
||||
#include <aws/core/auth/AWSCredentialsProviderChain.h>
|
||||
|
||||
namespace smithy
|
||||
{
|
||||
class AwsCredentialsProviderIdentityResolver : public AwsCredentialIdentityResolver
|
||||
{
|
||||
public:
|
||||
using SigV4AuthSchemeParameters = DefaultAuthSchemeResolverParameters;
|
||||
|
||||
explicit AwsCredentialsProviderIdentityResolver(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider> credentialsProvider)
|
||||
: m_credentialsProvider(credentialsProvider)
|
||||
{
|
||||
}
|
||||
|
||||
AwsCredentialsProviderIdentityResolver(const AwsCredentialsProviderIdentityResolver& other) = delete;
|
||||
AwsCredentialsProviderIdentityResolver(AwsCredentialsProviderIdentityResolver&& other) noexcept = default;
|
||||
AwsCredentialsProviderIdentityResolver& operator=(const AwsCredentialsProviderIdentityResolver& other) = delete;
|
||||
AwsCredentialsProviderIdentityResolver& operator=(AwsCredentialsProviderIdentityResolver&& other) noexcept = default;
|
||||
~AwsCredentialsProviderIdentityResolver() override = default;
|
||||
|
||||
ResolveIdentityFutureOutcome getIdentity(const IdentityProperties& identityProperties,
|
||||
const AdditionalParameters& additionalParameters) override
|
||||
{
|
||||
AWS_UNREFERENCED_PARAM(identityProperties);
|
||||
AWS_UNREFERENCED_PARAM(additionalParameters);
|
||||
|
||||
const auto fetchedCreds = m_credentialsProvider->GetAWSCredentials();
|
||||
|
||||
auto smithyCreds = Aws::MakeUnique<AwsCredentialIdentity>("DefaultAwsCredentialIdentityResolver",
|
||||
fetchedCreds.GetAWSAccessKeyId(), fetchedCreds.GetAWSSecretKey(),
|
||||
fetchedCreds.GetSessionToken(), fetchedCreds.GetExpiration());
|
||||
|
||||
return {std::move(smithyCreds)};
|
||||
}
|
||||
|
||||
protected:
|
||||
std::shared_ptr<Aws::Auth::AWSCredentialsProvider> m_credentialsProvider;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <smithy/identity/resolver/AwsCredentialIdentityResolver.h>
|
||||
|
||||
#include <aws/core/auth/AWSCredentials.h>
|
||||
#include <aws/core/auth/AWSCredentialsProviderChain.h>
|
||||
|
||||
namespace smithy {
|
||||
constexpr char ALLOC_ID[] = "DefaultAwsCredentialIdentityResolver";
|
||||
/**
|
||||
* A smithy SigV4 AWS Credentials resolver wrapper on top of legacy SDK Credentials provider
|
||||
* TODO: refactor into own signer using smithy design
|
||||
*/
|
||||
class DefaultAwsCredentialIdentityResolver : public AwsCredentialIdentityResolver {
|
||||
protected:
|
||||
|
||||
mutable std::shared_ptr<Aws::Auth::AWSCredentialsProviderChain> legacyChain_sp;
|
||||
|
||||
public:
|
||||
using SigV4AuthSchemeParameters = DefaultAuthSchemeResolverParameters;
|
||||
|
||||
DefaultAwsCredentialIdentityResolver(): legacyChain_sp{Aws::MakeShared<Aws::Auth::DefaultAWSCredentialsProviderChain>(ALLOC_ID)}{
|
||||
|
||||
};
|
||||
|
||||
DefaultAwsCredentialIdentityResolver(const DefaultAwsCredentialIdentityResolver& other) = delete;
|
||||
DefaultAwsCredentialIdentityResolver(DefaultAwsCredentialIdentityResolver&& other) noexcept = default;
|
||||
DefaultAwsCredentialIdentityResolver& operator=(const DefaultAwsCredentialIdentityResolver& other) = delete;
|
||||
DefaultAwsCredentialIdentityResolver& operator=(DefaultAwsCredentialIdentityResolver&& other) noexcept = default;
|
||||
virtual ~DefaultAwsCredentialIdentityResolver() = default;
|
||||
|
||||
DefaultAwsCredentialIdentityResolver(std::shared_ptr<Aws::Auth::AWSCredentialsProviderChain> providerChain): legacyChain_sp{providerChain}
|
||||
{
|
||||
assert(legacyChain_sp);
|
||||
};
|
||||
|
||||
ResolveIdentityFutureOutcome getIdentity(const IdentityProperties& identityProperties, const AdditionalParameters& additionalParameters) override
|
||||
{
|
||||
AWS_UNREFERENCED_PARAM(identityProperties);
|
||||
AWS_UNREFERENCED_PARAM(additionalParameters);
|
||||
|
||||
auto legacyCreds = legacyChain_sp->GetAWSCredentials();
|
||||
|
||||
auto smithyCreds = Aws::MakeUnique<AwsCredentialIdentity>("DefaultAwsCredentialIdentityResolver",
|
||||
legacyCreds.GetAWSAccessKeyId(),
|
||||
legacyCreds.GetAWSSecretKey(),
|
||||
legacyCreds.GetSessionToken().empty()? Aws::Crt::Optional<Aws::String>() : legacyCreds.GetSessionToken(),
|
||||
legacyCreds.GetExpiration());
|
||||
|
||||
return ResolveIdentityFutureOutcome(std::move(smithyCreds));
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <smithy/identity/resolver/AwsCredentialIdentityResolver.h>
|
||||
|
||||
#include <aws/core/auth/AWSCredentials.h>
|
||||
#include <aws/core/auth/AWSCredentialsProviderChain.h>
|
||||
|
||||
namespace smithy
|
||||
{
|
||||
class SimpleAwsCredentialIdentityResolver : public AwsCredentialIdentityResolver
|
||||
{
|
||||
public:
|
||||
using SigV4AuthSchemeParameters = DefaultAuthSchemeResolverParameters;
|
||||
|
||||
explicit SimpleAwsCredentialIdentityResolver(const Aws::Auth::AWSCredentials& credentials)
|
||||
: m_credentials(credentials)
|
||||
{
|
||||
}
|
||||
|
||||
SimpleAwsCredentialIdentityResolver(const SimpleAwsCredentialIdentityResolver& other) = delete;
|
||||
SimpleAwsCredentialIdentityResolver(SimpleAwsCredentialIdentityResolver&& other) noexcept = default;
|
||||
SimpleAwsCredentialIdentityResolver& operator=(const SimpleAwsCredentialIdentityResolver& other) = delete;
|
||||
SimpleAwsCredentialIdentityResolver& operator=(SimpleAwsCredentialIdentityResolver&& other) noexcept = default;
|
||||
virtual ~SimpleAwsCredentialIdentityResolver() = default;
|
||||
|
||||
ResolveIdentityFutureOutcome getIdentity(const IdentityProperties& identityProperties,
|
||||
const AdditionalParameters& additionalParameters) override
|
||||
{
|
||||
AWS_UNREFERENCED_PARAM(identityProperties);
|
||||
AWS_UNREFERENCED_PARAM(additionalParameters);
|
||||
|
||||
auto smithyCreds = Aws::MakeUnique<AwsCredentialIdentity>("DefaultAwsCredentialIdentityResolver",
|
||||
m_credentials.GetAWSAccessKeyId(), m_credentials.GetAWSSecretKey(),
|
||||
m_credentials.GetSessionToken(), m_credentials.GetExpiration());
|
||||
|
||||
return {std::move(smithyCreds)};
|
||||
}
|
||||
|
||||
protected:
|
||||
Aws::Auth::AWSCredentials m_credentials;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user