@@ -2,11 +2,14 @@ package defaultazurecredential
22
33import (
44 "context"
5+ "fmt"
6+ "os"
57
68 "github.com/Azure/azure-sdk-for-go/sdk/azcore"
79 "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
810 "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
911 "github.com/Azure/go-autorest/autorest"
12+ "github.com/Azure/go-autorest/autorest/azure"
1013 "k8s.io/klog/v2"
1114)
1215
@@ -26,20 +29,34 @@ func NewAuthorizer() (autorest.Authorizer, error) {
2629 return nil , err
2730 }
2831
32+ scope := tokenScopeFromEnvironment ()
33+ klog .V (7 ).Infof ("Fetching token with scope %s" , scope )
2934 return autorest .NewBearerAuthorizer (& tokenCredentialWrapper {
30- cred : cred ,
35+ cred : cred ,
36+ scope : scope ,
3137 }), nil
3238}
3339
40+ func tokenScopeFromEnvironment () string {
41+ cloud := os .Getenv ("AZURE_ENVIRONMENT" )
42+ env , err := azure .EnvironmentFromName (cloud )
43+ if err != nil {
44+ env = azure .PublicCloud
45+ }
46+
47+ return fmt .Sprintf ("%s.default" , env .TokenAudience )
48+ }
49+
3450type tokenCredentialWrapper struct {
35- cred azcore.TokenCredential
51+ cred azcore.TokenCredential
52+ scope string
3653}
3754
3855func (w * tokenCredentialWrapper ) OAuthToken () string {
3956 klog .V (7 ).Info ("Getting Azure token using DefaultAzureCredential" )
4057
4158 token , err := w .cred .GetToken (context .Background (), policy.TokenRequestOptions {
42- Scopes : []string {"https://management.azure.com/.default" },
59+ Scopes : []string {w . scope },
4360 })
4461
4562 if err != nil {
0 commit comments