Skip to content

Commit ec14a32

Browse files
committed
fix(credential-provider-sso): support sso credential in ini credential provider
1 parent 3670381 commit ec14a32

File tree

5 files changed

+288
-163
lines changed

5 files changed

+288
-163
lines changed

packages/credential-provider-ini/src/index.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { fromContainerMetadata, fromInstanceMetadata } from "@aws-sdk/credential
33
import { fromTokenFile } from "@aws-sdk/credential-provider-web-identity";
44
import { ENV_CONFIG_PATH, ENV_CREDENTIALS_PATH } from "@aws-sdk/shared-ini-file-loader";
55
import { Credentials } from "@aws-sdk/types";
6+
import { ENV_PROFILE } from "@aws-sdk/util-credentials";
67
import { join, sep } from "path";
78

8-
import { AssumeRoleParams, ENV_PROFILE, fromIni } from "./";
9+
import { AssumeRoleParams, fromIni } from "./";
910

1011
jest.mock("fs", () => {
1112
interface FsModule {

packages/credential-provider-ini/src/index.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import { fromEnv } from "@aws-sdk/credential-provider-env";
22
import { fromContainerMetadata, fromInstanceMetadata } from "@aws-sdk/credential-provider-imds";
3+
import { fromSSO, isSsoProfile, validateSsoProfile } from "@aws-sdk/credential-provider-sso";
34
import { AssumeRoleWithWebIdentityParams, fromTokenFile } from "@aws-sdk/credential-provider-web-identity";
45
import { CredentialsProviderError } from "@aws-sdk/property-provider";
56
import { ParsedIniData, Profile } from "@aws-sdk/shared-ini-file-loader";
67
import { CredentialProvider, Credentials } from "@aws-sdk/types";
78
import { getMasterProfileName, parseKnownFiles, SourceProfileInit } from "@aws-sdk/util-credentials";
89

9-
export const ENV_PROFILE = "AWS_PROFILE";
10-
1110
/**
1211
* @see http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/STS.html#assumeRole-property
1312
* TODO update the above to link to V3 docs
@@ -147,6 +146,16 @@ const resolveProfileData = async (
147146
return resolveStaticCredentials(data);
148147
}
149148

149+
if (isSsoProfile(data)) {
150+
const { sso_start_url, sso_account_id, sso_region, sso_role_name } = validateSsoProfile(data);
151+
return fromSSO({
152+
ssoStartUrl: sso_start_url,
153+
ssoAccountId: sso_account_id,
154+
ssoRegion: sso_region,
155+
ssoRoleName: sso_role_name,
156+
})();
157+
}
158+
150159
// If this is the first profile visited, role assumption keys should be
151160
// given precedence over static credentials.
152161
if (isAssumeRoleWithSourceProfile(data) || isAssumeRoleWithProviderProfile(data)) {

packages/credential-provider-sso/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
"license": "Apache-2.0",
2323
"dependencies": {
2424
"@aws-sdk/client-sso": "3.21.0",
25-
"@aws-sdk/credential-provider-ini": "3.20.0",
2625
"@aws-sdk/property-provider": "3.20.0",
2726
"@aws-sdk/shared-ini-file-loader": "3.20.0",
2827
"@aws-sdk/types": "3.20.0",
28+
"@aws-sdk/util-credentials": "3.0.0",
2929
"tslib": "^2.0.0"
3030
},
3131
"devDependencies": {

0 commit comments

Comments
 (0)