Skip to content

Commit c76552e

Browse files
committed
updated test
1 parent dce7541 commit c76552e

File tree

4 files changed

+49
-1
lines changed

4 files changed

+49
-1
lines changed

src/aws-cpp-sdk-core/include/aws/core/client/UserAgent.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ enum class UserAgentFeature {
3939
CREDENTIALS_STS_ASSUME_ROLE,
4040
CREDENTIALS_HTTP,
4141
CREDENTIALS_SSO,
42+
CREDENTIALS_SSO_LEGACY,
4243
CREDENTIALS_PROFILE_SOURCE_PROFILE,
4344
};
4445

src/aws-cpp-sdk-core/source/auth/SSOCredentialsProvider.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@ void SSOCredentialsProvider::Reload()
102102

103103
m_credentials = result.creds;
104104
if (!m_credentials.IsEmpty()) {
105-
m_credentials.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_SSO);
105+
if (!profile.IsSsoSessionSet()) {
106+
m_credentials.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_SSO_LEGACY);
107+
} else {
108+
m_credentials.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_SSO);
109+
}
106110
}
107111
}
108112

src/aws-cpp-sdk-core/source/client/UserAgent.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const std::pair<UserAgentFeature, const char*> BUSINESS_METRIC_MAPPING[] = {
4949
{UserAgentFeature::CREDENTIALS_STS_ASSUME_ROLE, "i"},
5050
{UserAgentFeature::CREDENTIALS_HTTP, "z"},
5151
{UserAgentFeature::CREDENTIALS_SSO, "s"},
52+
{UserAgentFeature::CREDENTIALS_SSO_LEGACY, "h"},
5253
{UserAgentFeature::CREDENTIALS_PROFILE_SOURCE_PROFILE, "p"},
5354
};
5455

tests/aws-cpp-sdk-core-tests/aws/auth/SSOCredentialTrackingTest.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,46 @@ TEST_F(SSOCredentialsProviderTrackingTest, TestSSOCredentialsTracking){
205205

206206
// Fire a signed request and assert the business metric appears once
207207
RunTrackingProbe(provider, "s");
208+
}
209+
210+
TEST_F(SSOCredentialsProviderTrackingTest, TestSSOLegacyCredentialsTracking){
211+
const Aws::String startUrl = "https://test.awsapps.com/start";
212+
213+
// Create legacy SSO config (without sso_session)
214+
std::ofstream cfg(m_configPath.c_str());
215+
cfg << "[default]\n"
216+
"sso_account_id = 123456789012\n"
217+
"sso_region = us-east-1\n"
218+
"sso_role_name = TestRole\n"
219+
"sso_start_url = " << startUrl << "\n";
220+
cfg.close();
221+
Aws::Config::ReloadCachedConfigFile();
222+
223+
CreateSSOTokenFile(startUrl);
224+
225+
// Prepare mock SSO GetRoleCredentials response
226+
auto ssoReq = CreateHttpRequest(
227+
URI("https://portal.sso.us-east-1.amazonaws.com/federation/credentials"),
228+
HttpMethod::HTTP_GET,
229+
Aws::Utils::Stream::DefaultResponseStreamFactoryMethod);
230+
231+
auto ssoResp = Aws::MakeShared<StandardHttpResponse>(TEST_LOG_TAG, ssoReq);
232+
ssoResp->SetResponseCode(HttpResponseCode::OK);
233+
ssoResp->GetResponseBody()
234+
<< R"({"roleCredentials":{
235+
"accessKeyId":"AKIAIOSFODNN7EXAMPLE",
236+
"secretAccessKey":"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
237+
"sessionToken":"AQoDYXdzEJr...",
238+
"expiration":)" << (DateTime::Now().Millis() + 3600000) << "}}";
239+
mockHttpClient->AddResponseToReturn(ssoResp);
240+
241+
auto provider = Aws::MakeShared<SSOCredentialsProvider>(TEST_LOG_TAG);
242+
auto creds = provider->GetAWSCredentials();
243+
244+
ASSERT_FALSE(creds.IsEmpty());
245+
EXPECT_EQ("AKIAIOSFODNN7EXAMPLE", creds.GetAWSAccessKeyId());
246+
EXPECT_EQ("wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", creds.GetAWSSecretKey());
247+
248+
// Fire a signed request and assert the legacy SSO business metric appears
249+
RunTrackingProbe(provider, "h");
208250
}

0 commit comments

Comments
 (0)