ensure credentials are regenerated on every connection
This commit is contained in:
		
							parent
							
								
									561fd232b5
								
							
						
					
					
						commit
						3ac52f3853
					
				|  | @ -32,8 +32,8 @@ type AuthTokenGenerator struct { | |||
| 	region      string | ||||
| 	req         *http.Request | ||||
| 
 | ||||
| 	credentials aws.Credentials | ||||
| 	signer      *v4.Signer | ||||
| 	credentialsProvider aws.CredentialsProvider | ||||
| 	signer              *v4.Signer | ||||
| } | ||||
| 
 | ||||
| func New(serviceName, clusterName, userName string) (*AuthTokenGenerator, error) { | ||||
|  | @ -44,17 +44,6 @@ func New(serviceName, clusterName, userName string) (*AuthTokenGenerator, error) | |||
| 	if err != nil { | ||||
| 		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{ | ||||
| 		"Action":        {connectAction}, | ||||
| 		"User":          {userName}, | ||||
|  | @ -75,19 +64,23 @@ func New(serviceName, clusterName, userName string) (*AuthTokenGenerator, error) | |||
| 	} | ||||
| 
 | ||||
| 	return &AuthTokenGenerator{ | ||||
| 		serviceName: serviceName, | ||||
| 		region:      cfg.Region, | ||||
| 		req:         req, | ||||
| 		credentials: credentials, | ||||
| 		signer:      v4.NewSigner(), | ||||
| 		serviceName:         serviceName, | ||||
| 		region:              cfg.Region, | ||||
| 		req:                 req, | ||||
| 		credentialsProvider: cfg.Credentials, | ||||
| 		signer:              v4.NewSigner(), | ||||
| 	}, nil | ||||
| } | ||||
| 
 | ||||
| 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( | ||||
| 		context.Background(), | ||||
| 		atg.credentials, | ||||
| 		ctx, | ||||
| 		credentials, | ||||
| 		atg.req, | ||||
| 		hexEncodedSHA256EmptyString, | ||||
| 		atg.serviceName, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue