Azure Blob Go lib, использующий TokenCredential для доступа к API BLOB-объекта, всегда возвращает ошибку - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь использовать библиотеку azblob go для доступа к хранилищу больших двоичных объектов с помощью субъекта службы. Я нашел один API: https://godoc.org/github.com/Azure/azure-storage-blob-go/azblob#NewTokenCredential Кажется, что он может взять OAuthToken из Adal lib, но я всегда получаюэта ошибка: AuthorizationPermissionMismatch

oauthConfig, err := adal.NewOAuthConfig(env.ActiveDirectoryEndpoint, tenantID)
spt, err := adal.NewServicePrincipalToken(*oauthConfig, clientID, clientSecret, "https://storage.azure.com/")    
creds := azblob.NewTokenCredential(spt.OAuthToken(), nil)
blobPipeline := azblob.NewPipeline(creds, azblob.PipelineOptions{})
url := azblob.NewContainerURL(*URL, blobPipeline)
_, err := url.ListBlobsHierarchySegment(...)

Если я использую NewTokenCredential с SharedKeyToken, то код может работать правильно, но мы не можем использовать SharedKeyToken в нашей среде.

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

В итоге я создал заявку на обслуживание для Azure, и они ответили здесь примером кода для аутентификации в Azure, используя golang: https://github.com/google/go-cloud/blob/master/blob/azureblob/example_test.go#L111

0 голосов
/ 22 октября 2019

Хорошая новость заключается в том, что похоже, что аутентификация прошла успешно, поэтому использование библиотеки ADAL кажется нормальным.

Наиболее вероятная причина этого заключается в том, что принципал, который вы используете для аутентификации вAzure Active Directory с не имеет необходимых разрешений для доступа к большим двоичным объектам в учетной записи хранения.

Вам потребуется войти в портал Azure, найти и выбрать соответствующую учетную запись хранения, а затем:

  1. Выбрать Контроль доступа (IAM)
  2. Перейти к Назначения ролей
  3. Нажмите Добавить button
  4. С помощью Role прокрутите вниз до Storage Blob ... и выберите одну из ролей BLOB-объектов хранилища в соответствии с вашими требованиями
  5. In Выберите текстовое поле, часть имени участника, для которого вы получаете токен для ADAL
  6. Нажмите кнопку Сохранить

После завершения попробуйте снова запустить приложение. Может потребоваться обновление токена, поэтому убедитесь, что ваш код аутентификации и поиска токена был перезапущен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...