Skip to content

Commit

Permalink
Add support sts in default credentials provider chain
Browse files Browse the repository at this point in the history
  • Loading branch information
JacksonTian committed Aug 12, 2024
1 parent 8f9f1e2 commit eed5e78
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
20 changes: 17 additions & 3 deletions credentials/env_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func newEnvProvider() Provider {
return &envProvider{}
}

func (p *envProvider) resolve() (*Config, error) {
func (p *envProvider) resolve() (config *Config, err error) {
accessKeyId, ok1 := os.LookupEnv(EnvVarAccessKeyIdNew)
if !ok1 || accessKeyId == "" {
accessKeyId, ok1 = os.LookupEnv(EnvVarAccessKeyId)
Expand All @@ -38,10 +38,24 @@ func (p *envProvider) resolve() (*Config, error) {
if accessKeySecret == "" {
return nil, errors.New(EnvVarAccessKeySecret + " cannot be empty")
}
config := &Config{

securityToken := os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN")

if securityToken != "" {
config = &Config{
Type: tea.String("sts"),
AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret),
SecurityToken: tea.String(securityToken),
}
return
}

config = &Config{
Type: tea.String("access_key"),
AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret),
}
return config, nil

return
}
11 changes: 11 additions & 0 deletions credentials/env_provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,16 @@ func TestEnvresolve(t *testing.T) {
originAccessKeyIdNew := os.Getenv(EnvVarAccessKeyIdNew)
originAccessKeyId := os.Getenv(EnvVarAccessKeyId)
originAccessKeySecret := os.Getenv(EnvVarAccessKeySecret)
originSecurityToken := os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN")
os.Setenv(EnvVarAccessKeyId, "")
os.Setenv(EnvVarAccessKeyIdNew, "")
os.Setenv(EnvVarAccessKeySecret, "")
os.Setenv("ALIBABA_CLOUD_SECURITY_TOKEN", "")
defer func() {
os.Setenv(EnvVarAccessKeyIdNew, originAccessKeyIdNew)
os.Setenv(EnvVarAccessKeyId, originAccessKeyId)
os.Setenv(EnvVarAccessKeySecret, originAccessKeySecret)
os.Setenv("ALIBABA_CLOUD_SECURITY_TOKEN", originSecurityToken)
}()
c, err := p.resolve()
assert.Nil(t, c)
Expand Down Expand Up @@ -52,4 +55,12 @@ func TestEnvresolve(t *testing.T) {
assert.Equal(t, "access_key", tea.StringValue(c.Type))
assert.Equal(t, "AccessKeyIdNew", tea.StringValue(c.AccessKeyId))
assert.Equal(t, "AccessKeySecret", tea.StringValue(c.AccessKeySecret))

os.Setenv("ALIBABA_CLOUD_SECURITY_TOKEN", "token")
c, err = p.resolve()
assert.Nil(t, err)
assert.Equal(t, "sts", tea.StringValue(c.Type))
assert.Equal(t, "AccessKeyIdNew", tea.StringValue(c.AccessKeyId))
assert.Equal(t, "AccessKeySecret", tea.StringValue(c.AccessKeySecret))
assert.Equal(t, "token", tea.StringValue(c.SecurityToken))
}

0 comments on commit eed5e78

Please sign in to comment.