Аутентификация AngularJS adal в хранилище BLOB-объектов Azure

У меня есть проект angularJS. Я включил в свои сценарии azure-blob-storage.js и могу получить доступ с использованием SAS, но не аутентификации AD.

Я добавил разрешения API хранилища Azure для регистрации приложения AD и назначил роли "Читатель приложения" и "Участник" для учетной записи хранения.

adalAuthenticationService.acquireToken({clientId},
        function(error, token) {
          // Handle ADAL Error
          if (error || !token) {
            return;
          }
        }).then(function (token) {
var tokenCredential = new AzureStorage.Blob.TokenCredential(token);
var blobService = AzureStorage.Blob.createBlobServiceWithTokenCredential({myStorageAccountURI}, tokenCredential);

Я получаю следующую ошибку:

<Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature....</Message>
<AuthenticationErrorDetail>Audience validation failed. Audience did not match.</AuthenticationErrorDetail></Error>

1 ответ

Решение

Ошибка Audience validation failed. Audience did not match. означает, что токен-аудитория (= предполагаемый получатель) неверна. Скорее всего, вы получаете токен для своего приложения с идентификатором клиента. Вы должны переключить его на https://storage.azure.com/ в вызове acquToken().

А также ваш пользователь должен иметь права на чтение / запись для больших двоичных объектов, как вы узнали:)

Другие вопросы по тегам