in cmd/utils/auth.go [82:100]
func (c *cachedInteractiveBrowserCredential) GetToken(ctx context.Context, options policy.TokenRequestOptions) (azcore.AccessToken, error) {
// TODO: may be this can be improved with https://github.com/Azure/kubectl-aks/issues/11
accounts, err := c.client.Accounts(ctx)
if err != nil {
return azcore.AccessToken{}, fmt.Errorf("getting account: %w", err)
}
var account public.Account
if len(accounts) > 0 {
account = accounts[len(accounts)-1]
}
result, err := c.client.AcquireTokenSilent(ctx, options.Scopes, public.WithSilentAccount(account))
if err != nil {
result, err = c.client.AcquireTokenInteractive(ctx, options.Scopes)
if err != nil {
return azcore.AccessToken{}, fmt.Errorf("acquiring interactive token: %w", err)
}
}
return azcore.AccessToken{Token: result.AccessToken, ExpiresOn: result.ExpiresOn}, nil
}