pkg/token/provider.go (30 lines of code) (raw):

package token import ( "context" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/kubelogin/pkg/internal/token" ) type tokenProviderShim struct { opts *token.Options cred token.CredentialProvider } var _ TokenProvider = (*tokenProviderShim)(nil) func (tp *tokenProviderShim) GetAccessToken(ctx context.Context) (AccessToken, error) { tro := policy.TokenRequestOptions{ TenantID: tp.opts.TenantID, Scopes: []string{token.GetScope(tp.opts.ServerID)}, } return tp.cred.GetToken(ctx, tro) } // GetTokenProvider returns a token provider based on the given options. func GetTokenProvider(options *Options) (TokenProvider, error) { opts := options.toInternalOptions() cred, err := token.NewAzIdentityCredential(azidentity.AuthenticationRecord{}, opts) if err != nil { return nil, err } return &tokenProviderShim{ cred: cred, opts: opts, }, nil }