Skip to content

Commit 891eae2

Browse files
authored
fix(client-sts): disable auth for public assumeRole commands (#1706)
1 parent e932876 commit 891eae2

File tree

8 files changed

+27
-8
lines changed

8 files changed

+27
-8
lines changed

clients/client-sts/STSClient.ts

+1-7
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,7 @@ import {
3030
} from "@aws-sdk/middleware-host-header";
3131
import { getLoggerPlugin } from "@aws-sdk/middleware-logger";
3232
import { RetryInputConfig, RetryResolvedConfig, getRetryPlugin, resolveRetryConfig } from "@aws-sdk/middleware-retry";
33-
import {
34-
AwsAuthInputConfig,
35-
AwsAuthResolvedConfig,
36-
getAwsAuthPlugin,
37-
resolveAwsAuthConfig,
38-
} from "@aws-sdk/middleware-signing";
33+
import { AwsAuthInputConfig, AwsAuthResolvedConfig, resolveAwsAuthConfig } from "@aws-sdk/middleware-signing";
3934
import {
4035
UserAgentInputConfig,
4136
UserAgentResolvedConfig,
@@ -221,7 +216,6 @@ export class STSClient extends __Client<
221216
let _config_6 = resolveHostHeaderConfig(_config_5);
222217
super(_config_6);
223218
this.config = _config_6;
224-
this.middlewareStack.use(getAwsAuthPlugin(this.config));
225219
this.middlewareStack.use(getRetryPlugin(this.config));
226220
this.middlewareStack.use(getUserAgentPlugin(this.config));
227221
this.middlewareStack.use(getContentLengthPlugin(this.config));

clients/client-sts/commands/AssumeRoleCommand.ts

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { STSClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "
22
import { AssumeRoleRequest, AssumeRoleResponse } from "../models/models_0";
33
import { deserializeAws_queryAssumeRoleCommand, serializeAws_queryAssumeRoleCommand } from "../protocols/Aws_query";
44
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
5+
import { getAwsAuthPlugin } from "@aws-sdk/middleware-signing";
56
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
67
import { Command as $Command } from "@aws-sdk/smithy-client";
78
import {
@@ -151,6 +152,7 @@ export class AssumeRoleCommand extends $Command<
151152
options?: __HttpHandlerOptions
152153
): Handler<AssumeRoleCommandInput, AssumeRoleCommandOutput> {
153154
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
155+
this.middlewareStack.use(getAwsAuthPlugin(configuration));
154156

155157
const stack = clientStack.concat(this.middlewareStack);
156158

clients/client-sts/commands/DecodeAuthorizationMessageCommand.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
serializeAws_queryDecodeAuthorizationMessageCommand,
66
} from "../protocols/Aws_query";
77
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
8+
import { getAwsAuthPlugin } from "@aws-sdk/middleware-signing";
89
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
910
import { Command as $Command } from "@aws-sdk/smithy-client";
1011
import {
@@ -81,6 +82,7 @@ export class DecodeAuthorizationMessageCommand extends $Command<
8182
options?: __HttpHandlerOptions
8283
): Handler<DecodeAuthorizationMessageCommandInput, DecodeAuthorizationMessageCommandOutput> {
8384
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
85+
this.middlewareStack.use(getAwsAuthPlugin(configuration));
8486

8587
const stack = clientStack.concat(this.middlewareStack);
8688

clients/client-sts/commands/GetAccessKeyInfoCommand.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
serializeAws_queryGetAccessKeyInfoCommand,
66
} from "../protocols/Aws_query";
77
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
8+
import { getAwsAuthPlugin } from "@aws-sdk/middleware-signing";
89
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
910
import { Command as $Command } from "@aws-sdk/smithy-client";
1011
import {
@@ -63,6 +64,7 @@ export class GetAccessKeyInfoCommand extends $Command<
6364
options?: __HttpHandlerOptions
6465
): Handler<GetAccessKeyInfoCommandInput, GetAccessKeyInfoCommandOutput> {
6566
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
67+
this.middlewareStack.use(getAwsAuthPlugin(configuration));
6668

6769
const stack = clientStack.concat(this.middlewareStack);
6870

clients/client-sts/commands/GetCallerIdentityCommand.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
serializeAws_queryGetCallerIdentityCommand,
66
} from "../protocols/Aws_query";
77
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
8+
import { getAwsAuthPlugin } from "@aws-sdk/middleware-signing";
89
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
910
import { Command as $Command } from "@aws-sdk/smithy-client";
1011
import {
@@ -55,6 +56,7 @@ export class GetCallerIdentityCommand extends $Command<
5556
options?: __HttpHandlerOptions
5657
): Handler<GetCallerIdentityCommandInput, GetCallerIdentityCommandOutput> {
5758
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
59+
this.middlewareStack.use(getAwsAuthPlugin(configuration));
5860

5961
const stack = clientStack.concat(this.middlewareStack);
6062

clients/client-sts/commands/GetFederationTokenCommand.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
serializeAws_queryGetFederationTokenCommand,
66
} from "../protocols/Aws_query";
77
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
8+
import { getAwsAuthPlugin } from "@aws-sdk/middleware-signing";
89
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
910
import { Command as $Command } from "@aws-sdk/smithy-client";
1011
import {
@@ -124,6 +125,7 @@ export class GetFederationTokenCommand extends $Command<
124125
options?: __HttpHandlerOptions
125126
): Handler<GetFederationTokenCommandInput, GetFederationTokenCommandOutput> {
126127
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
128+
this.middlewareStack.use(getAwsAuthPlugin(configuration));
127129

128130
const stack = clientStack.concat(this.middlewareStack);
129131

clients/client-sts/commands/GetSessionTokenCommand.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
serializeAws_queryGetSessionTokenCommand,
66
} from "../protocols/Aws_query";
77
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
8+
import { getAwsAuthPlugin } from "@aws-sdk/middleware-signing";
89
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
910
import { Command as $Command } from "@aws-sdk/smithy-client";
1011
import {
@@ -97,6 +98,7 @@ export class GetSessionTokenCommand extends $Command<
9798
options?: __HttpHandlerOptions
9899
): Handler<GetSessionTokenCommandInput, GetSessionTokenCommandOutput> {
99100
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
101+
this.middlewareStack.use(getAwsAuthPlugin(configuration));
100102

101103
const stack = clientStack.concat(this.middlewareStack);
102104

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddBuiltinPlugins.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,10 @@ public List<RuntimeClientPlugin> getClientPlugins() {
6767
.withConventions(AwsDependency.MIDDLEWARE_SIGNING.dependency, "AwsAuth", HAS_MIDDLEWARE)
6868
// See operationUsesAwsAuth() below for AwsAuth Middleware customizations.
6969
.servicePredicate(
70-
(m, s) -> !testServiceId(s, "Cognito Identity") && !hasOptionalAuthOperation(m, s)
70+
(m, s) ->
71+
!testServiceId(s, "Cognito Identity") &&
72+
!testServiceId(s, "STS") &&
73+
!hasOptionalAuthOperation(m, s)
7174
).build(),
7275
RuntimeClientPlugin.builder()
7376
.withConventions(TypeScriptDependency.MIDDLEWARE_RETRY.dependency, "Retry")
@@ -174,6 +177,16 @@ private static boolean operationUsesAwsAuth(Model model, ServiceShape service, O
174177
.contains(operation.getId().getName());
175178
return !isUnsignedCommand;
176179
}
180+
181+
// STS doesn't need auth for AssumeRoleWithWebIdentity, AssumeRoleWithSAML.
182+
// Remove when optionalAuth model update is published in 0533102932.
183+
if (testServiceId(service, "STS")) {
184+
Boolean isUnsignedCommand = SetUtils
185+
.of("AssumeRoleWithWebIdentity", "AssumeRoleWithSAML")
186+
.contains(operation.getId().getName());
187+
return !isUnsignedCommand;
188+
}
189+
177190
// optionalAuth trait doesn't require authentication.
178191
if (hasOptionalAuthOperation(model, service)) {
179192
return !operation.getTrait(OptionalAuthTrait.class).isPresent();

0 commit comments

Comments
 (0)