mirror of
https://github.com/argoproj/argo-cd
synced 2026-04-21 17:07:16 +00:00
36 lines
933 B
Go
36 lines
933 B
Go
//go:build !darwin || (cgo && darwin)
|
|
|
|
package workloadidentity
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
|
|
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
|
|
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
|
|
)
|
|
|
|
type WorkloadIdentityTokenProvider struct {
|
|
tokenCredential azcore.TokenCredential
|
|
}
|
|
|
|
func NewWorkloadIdentityTokenProvider() TokenProvider {
|
|
cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{})
|
|
initError = err
|
|
return WorkloadIdentityTokenProvider{tokenCredential: cred}
|
|
}
|
|
|
|
func (c WorkloadIdentityTokenProvider) GetToken(scope string) (*Token, error) {
|
|
if initError != nil {
|
|
return nil, initError
|
|
}
|
|
|
|
token, err := c.tokenCredential.GetToken(context.Background(), policy.TokenRequestOptions{
|
|
Scopes: []string{scope},
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &Token{AccessToken: token.Token, ExpiresOn: token.ExpiresOn}, nil
|
|
}
|