Skip to content

Commit 9505894

Browse files
committed
removed imds and profile tracking temporarily
removed default constructor for context object Updated Authv4signer logic for double /m
1 parent 546077e commit 9505894

File tree

6 files changed

+28
-44
lines changed

6 files changed

+28
-44
lines changed

src/aws-cpp-sdk-core/include/aws/core/auth/AWSCredentialsProvider.h

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ namespace Aws
3939
// Default constructor - no features tracked
4040
CredentialsResolutionContext() = default;
4141

42-
explicit CredentialsResolutionContext(Aws::Set<Aws::Client::UserAgentFeature> features)
43-
: m_features(std::move(features)) {}
44-
4542
/**
4643
* Add a user agent feature to track credential usage.
4744
*/
@@ -218,11 +215,6 @@ namespace Aws
218215
* Retrieves the credentials if found, otherwise returns empty credential set.
219216
*/
220217
AWSCredentials GetAWSCredentials() override;
221-
222-
/**
223-
* Context-based interface that adds profile credential tracking.
224-
*/
225-
AWSCredentials GetAWSCredentials(CredentialsResolutionContext& context) override;
226218

227219
/**
228220
* Returns the fullpath of the calculated credentials profile file
@@ -276,11 +268,6 @@ namespace Aws
276268
* Retrieves the credentials if found, otherwise returns empty credential set.
277269
*/
278270
AWSCredentials GetAWSCredentials() override;
279-
280-
/**
281-
* Context-based interface that adds instance profile credential tracking.
282-
*/
283-
AWSCredentials GetAWSCredentials(CredentialsResolutionContext& context) override;
284271

285272
protected:
286273
void Reload() override;

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ enum class UserAgentFeature {
3333
RESOLVED_ACCOUNT_ID,
3434
GZIP_REQUEST_COMPRESSION,
3535
CREDENTIALS_ENV_VARS,
36-
CREDENTIALS_IMDS,
37-
CREDENTIALS_PROFILE,
3836
};
3937

4038
class AWS_CORE_API UserAgent {

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

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -212,14 +212,6 @@ AWSCredentials ProfileConfigFileAWSCredentialsProvider::GetAWSCredentials()
212212
return AWSCredentials();
213213
}
214214

215-
AWSCredentials ProfileConfigFileAWSCredentialsProvider::GetAWSCredentials(CredentialsResolutionContext& context)
216-
{
217-
AWSCredentials credentials = GetAWSCredentials();
218-
if (!credentials.IsEmpty()) {
219-
context.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_PROFILE);
220-
}
221-
return credentials;
222-
}
223215

224216
void ProfileConfigFileAWSCredentialsProvider::Reload()
225217
{
@@ -289,15 +281,6 @@ AWSCredentials InstanceProfileCredentialsProvider::GetAWSCredentials()
289281
return AWSCredentials();
290282
}
291283

292-
AWSCredentials InstanceProfileCredentialsProvider::GetAWSCredentials(CredentialsResolutionContext& context)
293-
{
294-
AWSCredentials credentials = GetAWSCredentials();
295-
if (!credentials.IsEmpty()) {
296-
context.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_IMDS);
297-
}
298-
return credentials;
299-
}
300-
301284
bool InstanceProfileCredentialsProvider::ExpiresSoon() const
302285
{
303286
auto profileIter = m_ec2MetadataConfigLoader->GetProfiles().find(Aws::Config::INSTANCE_PROFILE_KEY);

src/aws-cpp-sdk-core/source/auth/signer/AWSAuthV4Signer.cpp

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,7 @@ bool AWSAuthV4Signer::SignRequest(Aws::Http::HttpRequest& request, const char* r
338338
{
339339
Aws::Auth::CredentialsResolutionContext context;
340340
AWSCredentials credentials = GetCredentials(context, request.GetServiceSpecificParameters());
341-
342-
// Update User-Agent with credential tracking features from context
341+
343342
UpdateUserAgentWithCredentialFeatures(request, context);
344343

345344
return SignRequestWithCreds(request, credentials, region, serviceName, signBody);
@@ -616,25 +615,35 @@ void AWSAuthV4Signer::UpdateUserAgentWithCredentialFeatures(Aws::Http::HttpReque
616615
if (features.empty()) {
617616
return;
618617
}
619-
620-
// Build credential features string
618+
621619
Aws::StringStream credentialFeatures;
622620
for (const auto& feature : features) {
623621
switch (feature) {
624622
case Aws::Client::UserAgentFeature::CREDENTIALS_ENV_VARS:
625623
credentialFeatures << "g";
626624
break;
627625
default:
628-
// Skip non-credential features
629626
break;
630627
}
631628
}
632-
633-
// Only append if we have credential features
629+
634630
if (!credentialFeatures.str().empty()) {
635631
Aws::String existingUA = request.GetHeaderValue(USER_AGENT);
636-
Aws::StringStream updatedUA;
637-
updatedUA << existingUA << " m/" << credentialFeatures.str();
638-
request.SetUserAgent(updatedUA.str());
632+
size_t mPos = existingUA.find(" m/");
633+
634+
if (mPos != Aws::String::npos) {
635+
// "m/" section already exists, find where to insert our metrics
636+
size_t metricsStart = mPos + 3; // Position after "m/"
637+
size_t nextSectionPos = existingUA.find(" ", metricsStart);
638+
639+
// Insert our metrics with comma separator at the end of existing metrics
640+
Aws::String newUA = existingUA;
641+
newUA.insert(nextSectionPos != Aws::String::npos ? nextSectionPos : existingUA.length(),
642+
"," + credentialFeatures.str());
643+
request.SetUserAgent(newUA);
644+
} else {
645+
// No existing "m/" section, add it
646+
request.SetUserAgent(existingUA + " m/" + credentialFeatures.str());
647+
}
639648
}
640649
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ const std::pair<UserAgentFeature, const char*> BUSINESS_METRIC_MAPPING[] = {
4343
{UserAgentFeature::RESOLVED_ACCOUNT_ID, "T"},
4444
{UserAgentFeature::GZIP_REQUEST_COMPRESSION, "L"},
4545
{UserAgentFeature::CREDENTIALS_ENV_VARS, "g"},
46-
{UserAgentFeature::CREDENTIALS_IMDS, "0"},
47-
{UserAgentFeature::CREDENTIALS_PROFILE, "n"},
4846
};
4947

5048
Aws::String BusinessMetricForFeature(UserAgentFeature feature) {

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,15 @@ TEST_F(CredentialTrackingTest, TestEnvironmentCredentialsTracking)
112112

113113
const auto userAgentParsed = Aws::Utils::StringUtils::Split(userAgent, ' ');
114114

115+
// Verify there's only one m/ section (no duplicate m/ sections)
116+
int mSectionCount = 0;
117+
for (const auto& part : userAgentParsed) {
118+
if (part.find("m/") != Aws::String::npos) {
119+
mSectionCount++;
120+
}
121+
}
122+
EXPECT_EQ(1, mSectionCount);
123+
115124
// Check for environment credentials business metric (g) in user agent
116125
auto businessMetrics = std::find_if(userAgentParsed.begin(), userAgentParsed.end(),
117126
[](const Aws::String& value) { return value.find("m/") != Aws::String::npos && value.find("g") != Aws::String::npos; });

0 commit comments

Comments
 (0)