ensure credentials are regenerated on every connection

This commit is contained in:
William Will 2025-04-16 04:38:34 +00:00 committed by Jan Larwig
parent 561fd232b5
commit 3ac52f3853
No known key found for this signature in database
GPG Key ID: C2172BFA220A037A
1 changed files with 14 additions and 21 deletions

View File

@ -32,7 +32,7 @@ type AuthTokenGenerator struct {
region string region string
req *http.Request req *http.Request
credentials aws.Credentials credentialsProvider aws.CredentialsProvider
signer *v4.Signer signer *v4.Signer
} }
@ -44,17 +44,6 @@ func New(serviceName, clusterName, userName string) (*AuthTokenGenerator, error)
if err != nil { if err != nil {
return nil, err return nil, err
} }
credentials, err := cfg.Credentials.Retrieve(ctx)
if err != nil {
return nil, err
}
if credentials.AccessKeyID == "" || credentials.SecretAccessKey == "" {
return nil, fmt.Errorf("AccessKeyID or SecretAccessKey is empty")
}
queryParams := url.Values{ queryParams := url.Values{
"Action": {connectAction}, "Action": {connectAction},
"User": {userName}, "User": {userName},
@ -78,16 +67,20 @@ func New(serviceName, clusterName, userName string) (*AuthTokenGenerator, error)
serviceName: serviceName, serviceName: serviceName,
region: cfg.Region, region: cfg.Region,
req: req, req: req,
credentials: credentials, credentialsProvider: cfg.Credentials,
signer: v4.NewSigner(), signer: v4.NewSigner(),
}, nil }, nil
} }
func (atg AuthTokenGenerator) Generate() (string, error) { func (atg AuthTokenGenerator) Generate() (string, error) {
ctx := context.Background()
credentials, err := atg.credentialsProvider.Retrieve(ctx)
if err != nil {
return "", fmt.Errorf("AWS IAM credentials retrieval failed - %v", err)
}
signedURL, _, err := atg.signer.PresignHTTP( signedURL, _, err := atg.signer.PresignHTTP(
context.Background(), ctx,
atg.credentials, credentials,
atg.req, atg.req,
hexEncodedSHA256EmptyString, hexEncodedSHA256EmptyString,
atg.serviceName, atg.serviceName,