From 1fe8b3a7b0bf7224829120303a26f508c842cb18 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 18 Aug 2021 04:36:41 -0400 Subject: [PATCH] Fix scopes mutation by cloning original array (#37981) (#37996) (cherry picked from commit c6356c5bba0aeea9de14c3a06c6838be4d31bed5) Co-authored-by: Sergey Kostrukov --- pkg/tsdb/azuremonitor/aztokenprovider/token_provider.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/tsdb/azuremonitor/aztokenprovider/token_provider.go b/pkg/tsdb/azuremonitor/aztokenprovider/token_provider.go index c5d9a289aec..c92e7698014 100644 --- a/pkg/tsdb/azuremonitor/aztokenprovider/token_provider.go +++ b/pkg/tsdb/azuremonitor/aztokenprovider/token_provider.go @@ -140,6 +140,12 @@ func (c *managedIdentityTokenRetriever) Init() error { } func (c *managedIdentityTokenRetriever) GetAccessToken(ctx context.Context, scopes []string) (*AccessToken, error) { + // Workaround for a bug in Azure SDK which mutates the passed array of scopes + // See details https://github.com/Azure/azure-sdk-for-go/issues/15308 + arr := make([]string, len(scopes)) + copy(arr, scopes) + scopes = arr + accessToken, err := c.credential.GetToken(ctx, azcore.TokenRequestOptions{Scopes: scopes}) if err != nil { return nil, err