Аутентификация 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().
А также ваш пользователь должен иметь права на чтение / запись для больших двоичных объектов, как вы узнали:)