Skip to content

Commit 1eb5c18

Browse files
authored
Migrate SSO profile properties to the SDK class (#2965)
1 parent c8071cd commit 1eb5c18

File tree

4 files changed

+13
-30
lines changed

4 files changed

+13
-30
lines changed

core/src/software/aws/toolkits/core/credentials/sso/SsoProfileProperty.kt

Lines changed: 0 additions & 9 deletions
This file was deleted.

jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/profiles/ProfileCredentialProviderFactory.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import software.aws.toolkits.core.credentials.CredentialSourceId
1919
import software.aws.toolkits.core.credentials.CredentialType
2020
import software.aws.toolkits.core.credentials.CredentialsChangeEvent
2121
import software.aws.toolkits.core.credentials.CredentialsChangeListener
22-
import software.aws.toolkits.core.credentials.sso.SSO_URL
2322
import software.aws.toolkits.core.credentials.sso.SsoCache
2423
import software.aws.toolkits.core.region.AwsRegion
2524
import software.aws.toolkits.jetbrains.core.credentials.MfaRequiredInteractiveCredentials
@@ -203,7 +202,7 @@ class ProfileCredentialProviderFactory(private val ssoCache: SsoCache = diskCach
203202
}
204203

205204
private fun createAwsCredentialProvider(profile: Profile, region: AwsRegion) = when {
206-
profile.propertyExists(SSO_URL) -> createSsoProvider(profile)
205+
profile.propertyExists(ProfileProperty.SSO_START_URL) -> createSsoProvider(profile)
207206
profile.propertyExists(ProfileProperty.ROLE_ARN) -> createAssumeRoleProvider(profile, region)
208207
profile.propertyExists(ProfileProperty.AWS_SESSION_TOKEN) -> createStaticSessionProvider(profile)
209208
profile.propertyExists(ProfileProperty.AWS_ACCESS_KEY_ID) -> createBasicProvider(profile)
@@ -253,7 +252,7 @@ class ProfileCredentialProviderFactory(private val ssoCache: SsoCache = diskCach
253252
name,
254253
defaultRegion,
255254
ssoCache,
256-
this.traverseCredentialChain(profiles).map { it.property(SSO_URL) }.first { it.isPresent }.get(),
255+
this.traverseCredentialChain(profiles).map { it.property(ProfileProperty.SSO_START_URL) }.first { it.isPresent }.get(),
257256
requestedProfileType
258257
)
259258
else -> ProfileCredentialsIdentifier(name, defaultRegion, requestedProfileType)
@@ -264,11 +263,11 @@ class ProfileCredentialProviderFactory(private val ssoCache: SsoCache = diskCach
264263
.any { it.propertyExists(ProfileProperty.MFA_SERIAL) }
265264

266265
private fun Profile.requiresSso(profiles: Map<String, Profile>) = this.traverseCredentialChain(profiles)
267-
.any { it.propertyExists(SSO_URL) }
266+
.any { it.propertyExists(ProfileProperty.SSO_START_URL) }
268267
}
269268

270269
private fun Profile.toCredentialType(): CredentialType? = when {
271-
this.propertyExists(SSO_URL) -> CredentialType.SsoProfile
270+
this.propertyExists(ProfileProperty.SSO_START_URL) -> CredentialType.SsoProfile
272271
this.propertyExists(ProfileProperty.ROLE_ARN) -> {
273272
if (this.propertyExists(ProfileProperty.MFA_SERIAL)) {
274273
CredentialType.AssumeMfaRoleProfile

jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/profiles/ProfileReader.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ package software.aws.toolkits.jetbrains.core.credentials.profiles
66
import software.amazon.awssdk.profiles.Profile
77
import software.amazon.awssdk.profiles.ProfileFile
88
import software.amazon.awssdk.profiles.ProfileProperty
9-
import software.aws.toolkits.core.credentials.sso.SSO_ACCOUNT
10-
import software.aws.toolkits.core.credentials.sso.SSO_REGION
11-
import software.aws.toolkits.core.credentials.sso.SSO_ROLE_NAME
12-
import software.aws.toolkits.core.credentials.sso.SSO_URL
139
import software.aws.toolkits.resources.message
1410

1511
data class Profiles(val validProfiles: Map<String, Profile>, val invalidProfiles: Map<String, Exception>)
@@ -37,7 +33,7 @@ fun validateAndGetProfiles(): Profiles {
3733

3834
private fun validateProfile(profile: Profile, allProfiles: Map<String, Profile>) {
3935
when {
40-
profile.propertyExists(SSO_URL) -> validateSsoProfile(profile)
36+
profile.propertyExists(ProfileProperty.SSO_START_URL) -> validateSsoProfile(profile)
4137
profile.propertyExists(ProfileProperty.ROLE_ARN) -> validateAssumeRoleProfile(profile, allProfiles)
4238
profile.propertyExists(ProfileProperty.AWS_SESSION_TOKEN) -> validateStaticSessionProfile(profile)
4339
profile.propertyExists(ProfileProperty.AWS_ACCESS_KEY_ID) -> validateBasicProfile(profile)
@@ -51,9 +47,9 @@ private fun validateProfile(profile: Profile, allProfiles: Map<String, Profile>)
5147
}
5248

5349
fun validateSsoProfile(profile: Profile) {
54-
profile.requiredProperty(SSO_ACCOUNT)
55-
profile.requiredProperty(SSO_REGION)
56-
profile.requiredProperty(SSO_ROLE_NAME)
50+
profile.requiredProperty(ProfileProperty.SSO_ACCOUNT_ID)
51+
profile.requiredProperty(ProfileProperty.SSO_REGION)
52+
profile.requiredProperty(ProfileProperty.SSO_ROLE_NAME)
5753
}
5854

5955
private fun validateAssumeRoleProfile(profile: Profile, allProfiles: Map<String, Profile>) {

jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/profiles/ProfileSsoProvider.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@ import software.amazon.awssdk.auth.credentials.AnonymousCredentialsProvider
77
import software.amazon.awssdk.auth.credentials.AwsCredentials
88
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider
99
import software.amazon.awssdk.profiles.Profile
10+
import software.amazon.awssdk.profiles.ProfileProperty
1011
import software.amazon.awssdk.regions.Region
1112
import software.amazon.awssdk.services.sso.SsoClient
1213
import software.amazon.awssdk.services.ssooidc.SsoOidcClient
1314
import software.amazon.awssdk.utils.SdkAutoCloseable
14-
import software.aws.toolkits.core.credentials.sso.SSO_ACCOUNT
15-
import software.aws.toolkits.core.credentials.sso.SSO_REGION
16-
import software.aws.toolkits.core.credentials.sso.SSO_ROLE_NAME
17-
import software.aws.toolkits.core.credentials.sso.SSO_URL
1815
import software.aws.toolkits.core.credentials.sso.SsoAccessTokenProvider
1916
import software.aws.toolkits.core.credentials.sso.SsoCredentialProvider
2017
import software.aws.toolkits.jetbrains.core.AwsClientManager
@@ -27,23 +24,23 @@ class ProfileSsoProvider(profile: Profile) : AwsCredentialsProvider, SdkAutoClos
2724
private val credentialsProvider: SsoCredentialProvider
2825

2926
init {
30-
val ssoRegion = profile.requiredProperty(SSO_REGION)
27+
val ssoRegion = profile.requiredProperty(ProfileProperty.SSO_REGION)
3128
val clientManager = AwsClientManager.getInstance()
3229

3330
ssoClient = clientManager.createUnmanagedClient(AnonymousCredentialsProvider.create(), Region.of(ssoRegion))
3431
ssoOidcClient = clientManager.createUnmanagedClient(AnonymousCredentialsProvider.create(), Region.of(ssoRegion))
3532

3633
val ssoAccessTokenProvider = SsoAccessTokenProvider(
37-
profile.requiredProperty(SSO_URL),
34+
profile.requiredProperty(ProfileProperty.SSO_START_URL),
3835
ssoRegion,
3936
SsoPrompt,
4037
diskCache,
4138
ssoOidcClient
4239
)
4340

4441
credentialsProvider = SsoCredentialProvider(
45-
profile.requiredProperty(SSO_ACCOUNT),
46-
profile.requiredProperty(SSO_ROLE_NAME),
42+
profile.requiredProperty(ProfileProperty.SSO_ACCOUNT_ID),
43+
profile.requiredProperty(ProfileProperty.SSO_ROLE_NAME),
4744
ssoClient,
4845
ssoAccessTokenProvider
4946
)

0 commit comments

Comments
 (0)