Better TokenRequestContext initialization (#4169)

* Better TokenRequestContext initialization

Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
This commit is contained in:
Anton Kolesnyk 2022-12-07 20:25:22 -08:00 committed by GitHub
parent 405ae8cba7
commit c14775d5fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 35 additions and 23 deletions

View File

@ -49,8 +49,8 @@ AttestationAdministrationClient::AttestationAdministrationClient(
std::vector<std::unique_ptr<HttpPolicy>> perRetrypolicies;
if (credential)
{
Azure::Core::Credentials::TokenRequestContext const tokenContext
= {{"https://attest.azure.net/.default"}};
Azure::Core::Credentials::TokenRequestContext tokenContext;
tokenContext.Scopes = {"https://attest.azure.net/.default"};
perRetrypolicies.emplace_back(
std::make_unique<BearerTokenAuthenticationPolicy>(credential, tokenContext));

View File

@ -38,8 +38,8 @@ AttestationClient::AttestationClient(
std::vector<std::unique_ptr<HttpPolicy>> perRetrypolicies;
if (credential)
{
Azure::Core::Credentials::TokenRequestContext const tokenContext
= {{"https://attest.azure.net/.default"}};
Azure::Core::Credentials::TokenRequestContext tokenContext;
tokenContext.Scopes = {"https://attest.azure.net/.default"};
perRetrypolicies.emplace_back(
std::make_unique<BearerTokenAuthenticationPolicy>(credential, tokenContext));

View File

@ -53,10 +53,12 @@ TEST(BearerTokenAuthenticationPolicy, InitialGet)
std::vector<std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>> policies;
Azure::Core::Credentials::TokenRequestContext tokenRequestContext;
tokenRequestContext.Scopes = {"https://microsoft.com/.default"};
policies.emplace_back(
std::make_unique<Azure::Core::Http::Policies::_internal::BearerTokenAuthenticationPolicy>(
std::make_shared<TestTokenCredential>(accessToken),
Azure::Core::Credentials::TokenRequestContext{{"https://microsoft.com/.default"}}));
std::make_shared<TestTokenCredential>(accessToken), tokenRequestContext));
policies.emplace_back(std::make_unique<TestTransportPolicy>());
@ -86,10 +88,12 @@ TEST(BearerTokenAuthenticationPolicy, ReuseWhileValid)
std::vector<std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>> policies;
Azure::Core::Credentials::TokenRequestContext tokenRequestContext;
tokenRequestContext.Scopes = {"https://microsoft.com/.default"};
policies.emplace_back(
std::make_unique<Azure::Core::Http::Policies::_internal::BearerTokenAuthenticationPolicy>(
std::make_shared<TestTokenCredential>(accessToken),
Azure::Core::Credentials::TokenRequestContext{{"https://microsoft.com/.default"}}));
std::make_shared<TestTokenCredential>(accessToken), tokenRequestContext));
policies.emplace_back(std::make_unique<TestTransportPolicy>());
@ -128,10 +132,12 @@ TEST(BearerTokenAuthenticationPolicy, RefreshNearExpiry)
std::vector<std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>> policies;
Azure::Core::Credentials::TokenRequestContext tokenRequestContext;
tokenRequestContext.Scopes = {"https://microsoft.com/.default"};
policies.emplace_back(
std::make_unique<Azure::Core::Http::Policies::_internal::BearerTokenAuthenticationPolicy>(
std::make_shared<TestTokenCredential>(accessToken),
Azure::Core::Credentials::TokenRequestContext{{"https://microsoft.com/.default"}}));
std::make_shared<TestTokenCredential>(accessToken), tokenRequestContext));
policies.emplace_back(std::make_unique<TestTransportPolicy>());
@ -170,10 +176,12 @@ TEST(BearerTokenAuthenticationPolicy, RefreshAfterExpiry)
std::vector<std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>> policies;
Azure::Core::Credentials::TokenRequestContext tokenRequestContext;
tokenRequestContext.Scopes = {"https://microsoft.com/.default"};
policies.emplace_back(
std::make_unique<Azure::Core::Http::Policies::_internal::BearerTokenAuthenticationPolicy>(
std::make_shared<TestTokenCredential>(accessToken),
Azure::Core::Credentials::TokenRequestContext{{"https://microsoft.com/.default"}}));
std::make_shared<TestTokenCredential>(accessToken), tokenRequestContext));
policies.emplace_back(std::make_unique<TestTransportPolicy>());

View File

@ -60,6 +60,7 @@ int main(int argc, char** argv)
using Azure::DateTime;
using Azure::Core::Context;
using Azure::Core::Credentials::TokenCredentialOptions;
using Azure::Core::Credentials::TokenRequestContext;
using Azure::Identity::ManagedIdentityCredential;
constexpr char const* resourceUrlEnvVarName = "AZURE_IDENTITY_TEST_VAULT_URL";
@ -94,7 +95,10 @@ int main(int argc, char** argv)
ManagedIdentityCredential credential(
Environment::GetVariable("AZURE_IDENTITY_TEST_MANAGED_IDENTITY_CLIENT_ID"), options);
auto const token = credential.GetToken({{resourceUrl}}, Context());
TokenRequestContext tokenRequestContext;
tokenRequestContext.Scopes = {resourceUrl};
auto const token = credential.GetToken(tokenRequestContext, Context());
std::string tokenPreview;
{

View File

@ -272,11 +272,11 @@ TEST(TokenCredentialImpl, FormatScopes)
// Spaces inside scopes get encoded, but the spaces separating scopes are not
EXPECT_EQ(TokenCredentialImpl::FormatScopes({"a b", "c d", "e f"}, false), "a%20b c%20d e%20f");
// 1 scope, './default' only, gets removed when treated as single resource
// 1 scope, '/.default' only, gets removed when treated as single resource
EXPECT_EQ(TokenCredentialImpl::FormatScopes({"/.default"}, false), "%2F.default");
EXPECT_EQ(TokenCredentialImpl::FormatScopes({"/.default"}, true), "");
// 2 scopes, './default' only
// 2 scopes, '/.default' only
EXPECT_EQ(
TokenCredentialImpl::FormatScopes({"/.default", "/.default"}, false),
"%2F.default %2F.default");

View File

@ -72,8 +72,8 @@ CertificateClient::CertificateClient(
std::vector<std::unique_ptr<HttpPolicy>> perRetrypolicies;
{
Azure::Core::Credentials::TokenRequestContext const tokenContext
= {{_internal::UrlScope::GetScopeFromUrl(m_vaultUrl)}};
Azure::Core::Credentials::TokenRequestContext tokenContext;
tokenContext.Scopes = {_internal::UrlScope::GetScopeFromUrl(m_vaultUrl)};
perRetrypolicies.emplace_back(
std::make_unique<BearerTokenAuthenticationPolicy>(credential, std::move(tokenContext)));

View File

@ -101,8 +101,8 @@ CryptographyClient::CryptographyClient(
{
std::vector<std::unique_ptr<HttpPolicy>> perRetrypolicies;
{
Azure::Core::Credentials::TokenRequestContext const tokenContext
= {{_internal::UrlScope::GetScopeFromUrl(m_keyId)}};
Azure::Core::Credentials::TokenRequestContext tokenContext;
tokenContext.Scopes = {_internal::UrlScope::GetScopeFromUrl(m_keyId)};
perRetrypolicies.emplace_back(
std::make_unique<BearerTokenAuthenticationPolicy>(credential, tokenContext));

View File

@ -72,8 +72,8 @@ KeyClient::KeyClient(
{
std::vector<std::unique_ptr<HttpPolicy>> perRetrypolicies;
{
Azure::Core::Credentials::TokenRequestContext const tokenContext
= {{_internal::UrlScope::GetScopeFromUrl(m_vaultUrl)}};
Azure::Core::Credentials::TokenRequestContext tokenContext;
tokenContext.Scopes = {_internal::UrlScope::GetScopeFromUrl(m_vaultUrl)};
perRetrypolicies.emplace_back(
std::make_unique<BearerTokenAuthenticationPolicy>(credential, std::move(tokenContext)));

View File

@ -68,8 +68,8 @@ SecretClient::SecretClient(
std::vector<std::unique_ptr<HttpPolicy>> perRetrypolicies;
{
Azure::Core::Credentials::TokenRequestContext const tokenContext
= {{_internal::UrlScope::GetScopeFromUrl(url)}};
Azure::Core::Credentials::TokenRequestContext tokenContext;
tokenContext.Scopes = {_internal::UrlScope::GetScopeFromUrl(url)};
perRetrypolicies.emplace_back(
std::make_unique<BearerTokenAuthenticationPolicy>(credential, tokenContext));