From e644c15bb8ec9fafdedda7ce68ad04081649e125 Mon Sep 17 00:00:00 2001 From: nanhe Date: Fri, 18 Apr 2025 17:26:55 +0800 Subject: [PATCH] feat: support StsToken mode in cli profile --- .../com/aliyuncs/auth/CLIProfileCredentialsProvider.java | 9 +++++++++ .../aliyuncs/auth/CLIProfileCredentialsProviderTest.java | 7 +++++++ .../src/test/resources/.aliyun/config.json | 7 +++++++ 3 files changed, 23 insertions(+) diff --git a/aliyun-java-sdk-core/src/main/java/com/aliyuncs/auth/CLIProfileCredentialsProvider.java b/aliyun-java-sdk-core/src/main/java/com/aliyuncs/auth/CLIProfileCredentialsProvider.java index 98aa6d16a3..e1d6c8b1c0 100644 --- a/aliyun-java-sdk-core/src/main/java/com/aliyuncs/auth/CLIProfileCredentialsProvider.java +++ b/aliyun-java-sdk-core/src/main/java/com/aliyuncs/auth/CLIProfileCredentialsProvider.java @@ -66,6 +66,9 @@ AlibabaCloudCredentialsProvider reloadCredentialsProvider(Config config, String if ("AK".equals(mode)) { return new StaticCredentialsProvider( new BasicCredentials(profile.getAccessKeyId(), profile.getAccessKeySecret())); + } else if ("StsToken".equals(mode)) { + return new StaticCredentialsProvider( + new BasicSessionCredentials(profile.getAccessKeyId(), profile.getAccessKeySecret(), profile.getSecurityToken())); } else if ("RamRoleArn".equals(mode)) { AlibabaCloudCredentialsProvider innerProvider = new StaticCredentialsProvider( new BasicCredentials(profile.getAccessKeyId(), profile.getAccessKeySecret())); @@ -185,6 +188,8 @@ static class Profile { private String accessKeyId; @SerializedName("access_key_secret") private String accessKeySecret; + @SerializedName("sts_token") + private String securityToken; @SerializedName("ram_role_arn") private String roleArn; @SerializedName("ram_session_name") @@ -224,6 +229,10 @@ public String getAccessKeySecret() { return accessKeySecret; } + public String getSecurityToken() { + return securityToken; + } + public String getRoleArn() { return roleArn; } diff --git a/aliyun-java-sdk-core/src/test/java/com/aliyuncs/auth/CLIProfileCredentialsProviderTest.java b/aliyun-java-sdk-core/src/test/java/com/aliyuncs/auth/CLIProfileCredentialsProviderTest.java index df08fa0bc0..6905dc2683 100644 --- a/aliyun-java-sdk-core/src/test/java/com/aliyuncs/auth/CLIProfileCredentialsProviderTest.java +++ b/aliyun-java-sdk-core/src/test/java/com/aliyuncs/auth/CLIProfileCredentialsProviderTest.java @@ -96,6 +96,13 @@ public void reloadCredentialsProviderTest() throws ClientException, IOException Assert.assertEquals("akid", credential.getAccessKeyId()); Assert.assertEquals("secret", credential.getAccessKeySecret()); + credentialsProvider = provider.reloadCredentialsProvider(config, "StsToken"); + Assert.assertTrue(credentialsProvider instanceof StaticCredentialsProvider); + BasicSessionCredentials sessionCredentials = (BasicSessionCredentials) credentialsProvider.getCredentials(); + Assert.assertEquals("accessKeyId", sessionCredentials.getAccessKeyId()); + Assert.assertEquals("accessKeySecret", sessionCredentials.getAccessKeySecret()); + Assert.assertEquals("stsToken", sessionCredentials.getSessionToken()); + credentialsProvider = provider.reloadCredentialsProvider(config, "RamRoleArn"); Assert.assertTrue(credentialsProvider instanceof STSAssumeRoleSessionCredentialsProvider); try { diff --git a/aliyun-java-sdk-core/src/test/resources/.aliyun/config.json b/aliyun-java-sdk-core/src/test/resources/.aliyun/config.json index b190355c8d..6beef91508 100644 --- a/aliyun-java-sdk-core/src/test/resources/.aliyun/config.json +++ b/aliyun-java-sdk-core/src/test/resources/.aliyun/config.json @@ -7,6 +7,13 @@ "access_key_id": "akid", "access_key_secret": "secret" }, + { + "name": "StsToken", + "mode": "StsToken", + "access_key_id": "accessKeyId", + "access_key_secret": "accessKeySecret", + "sts_token": "stsToken" + }, { "name": "RamRoleArn", "mode": "RamRoleArn",