Получение ответа AuthorizationFailure (403) на Azure хранилище BLOB-объектов через REST API с токеном SAS - PullRequest
2 голосов
/ 04 августа 2020

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

У меня есть учетная запись хранения Azure с контейнером BLOB-объектов с зашифрованным изображений. Изображения были загружены с помощью запроса PUT (из браузера) в Azure Blob Storage REST API с использованием подписи SAS (сгенерированной виртуальной машиной Azure) и ключей, предоставленных клиентом (заголовки x-ms-encryption). Однако при попытке загрузить изображения с виртуальной машины Azure с помощью запроса GET (с использованием curl) я получаю следующую ошибку 403 «AuthorizationFailure»:

<?xml version="1.0" encoding="utf-8”?>
<Error>
  <Code>AuthorizationFailure</Code>
  <Message>
    This request is not authorized to perform this operation.
    RequestId:1b203db6-c01e-0013-1553-6adb9b000000
    Time:2020-08-04T11:33:42.9494992Z
  </Message>
</Error>

Однако забавная вещь, когда я выполняю точно тот же запрос GET (точно такие же заголовки) с curl, Postman или браузером с моего собственного локального компьютера и даже с других Azure виртуальных машин, расположенных в разных группах ресурсов и разных виртуальных сетях, он работает, как ожидалось, и я могу успешно загрузить зашифрованное изображение. Это подтверждает, что подпись SAS и переданные заголовки построены правильно.

Я просмотрел всю конфигурацию виртуальной машины, группы сетевой безопасности, виртуальной сети и учетной записи хранения на портале Azure и сравнил ее с другие виртуальные машины, которые успешно загружают образы, и все настройки точно такие же, за исключением:

  1. В виртуальной машине, которая не может загрузить образ, я авторизован как участник для этого Только группа ресурсов виртуальной машины, а в работающей виртуальной машине я являюсь владельцем учетной записи.

  2. В учетной записи, владельцем которой я являюсь, Azure создал новую группу ресурсов. называется NetworkWatcherRG, к которому, похоже, не подключены никакие ресурсы. В виртуальной машине, в которой возникла проблема, у меня нет доступа к этой группе ресурсов, поэтому я игнорирую, была ли она создана Azure или нет, и влияет ли это на проблему, с которой я сталкиваюсь.

Буду очень признателен за любые идеи или предложения относительно того, в чем может заключаться проблема.

1 Ответ

1 голос
/ 04 августа 2020

Я думаю, что может быть проблема, когда вы отправляете запрос через c# код, возможно, заголовки установлены неправильно. Не могли бы вы поделиться своим кодом, чтобы мы могли помочь вам лучше ..

...