Azure создает контейнер больших двоичных объектов с использованием REST API и управляемого удостоверения - ошибка 403

Я пытаюсь создать контейнер больших двоичных объектов под учетной записью хранения с помощью REST api

Я использую управляемую идентификацию (для службы приложений, приложения узла) для взаимодействия с учетной записью хранения. У этого управляемого удостоверения есть необходимые разрешения для группы ресурсов и учетной записи хранения - участник учетной записи хранения и участник данных большого двоичного объекта хранилища.

Вот шаги, которые я выполняю:

обязательные заголовки, которые я отправляю на втором этапе:

  • Авторизация: токен доступа на предъявителя
  • x-ms-date: 2021-06-17T09: 01: 48.667Z
  • x-ms-версия: 2020-04-08

Я получаю: statusCode: 403, statusMessage: «Серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись. '

Что мне не хватает при отправке заголовка авторизации? Не удалось найти ни одного примера вызова API создания контейнера с использованием управляемого удостоверения.

Другой вариант - использовать sdk хранилища больших двоичных объектов (https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-nodejs), но не смог найти ни одного примера создания контейнера с использованием управляемого удостоверения.

Мы очень ценим любые указатели на эту работу.

Спасибо,


person Ani    schedule 17.06.2021    source источник


Ответы (1)


Во-первых, вы не могли вызвать Rest API с управляемой идентификацией. Заголовок Authorization требует схемы авторизации, имени учетной записи и подписи.

введите описание изображения здесь

Управление большими двоичными объектами с помощью SDK JavaScript v12 в Node.js:

Вы можете использовать @azure/identity для управляемой идентификации.

const { ManagedIdentityCredential } = require("@azure/identity");
const { BlobServiceClient } = require("@azure/storage-blob");

const credential = new ManagedIdentityCredential("<USER_ASSIGNED_MANAGED_IDENTITY_CLIENT_ID>");

const blobServiceClient = new BlobServiceClient(
    `https://${account}.blob.core.windows.net`,
    credential
);
person Pamela Peng    schedule 17.06.2021
comment
Благодарю. удалось заставить его работать с использованием Azure Identity и sdk хранилища BLOB-объектов, как было предложено (также ссылка: docs.microsoft.com/en-us/javascript/api/overview/azure/). Используется DefaultAzureCredential, также я использую идентификацию, управляемую системой. - person Ani; 17.06.2021