Доступ к контейнеру учетной записи хранения Azure через браузер - ошибка аутентификации

Мы хотим предоставить некоторым пользователям доступ к контейнеру, чтобы они могли видеть список своих файлов в браузере, щелкая по ним, чтобы прочитать их.

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

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

Но когда я пытаюсь получить доступ к этому контейнеру в браузере, я получаю следующую ошибку. Я создал для него токен SAS в проводнике хранилища.

https://teststorageaccount21.blob.core.windows.net/publicc?sv=2019-12-12&st=2021-02-08T20%3A58%3A42Z&se=2021-03-09T20%3A58%3A00Z&sr=c&sp=rl&sig=AjF0IpWIBGZtBeKcOodd8HieENZ0F3Cuig54Y8e0oIM%3D

<Error>
<Code>AuthenticationFailed</Code>
<Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:9cb791c8-a01e-0016-625f-fe693a000000 Time:2021-02-08T21:16:09.2176268Z</Message>
<AuthenticationErrorDetail>Signature did not match. String to sign used was rl 2021-02-08T20:58:42Z 2021-03-09T20:58:00Z /blob/teststorageaccount21/$root 2019-12-12 c </AuthenticationErrorDetail>
</Error>

Когда я пытаюсь получить доступ к BLOB-объекту в этом контейнере, я могу получить к нему доступ без каких-либо проблем.

По этой ссылке можно увидеть файл

person Sarah    schedule 08.02.2021    source источник
comment
@Frank Gong Извините, что принял ответ так поздно, ваш ответ очень помог. Так что цените это.   -  person Sarah    schedule 17.02.2021


Ответы (1)


Ваш SAS токен относится к уровню blob-объекта, вам нужно сгенерировать SAS token на уровне контейнера :

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

Если вы перечислите blob-объекты по https://<storage-account-name>.blob.core.windows.net/<container>?<sas-token> в браузере, вы получите сообщение об ошибке:

<Error>
<Code>ContainerNotFound</Code>
<Message>The specified container does not exist. RequestId:54174bad-401e-0046-218e-fe53dd000000 Time:2021-02-09T02:52:30.1104394Z</Message>
</Error>

Поэтому вам нужно использовать List Blobs API, пожалуйста используйте этот формат URL:

https://<storage-account-name>.blob.core.windows.net/<container>?restype=container&comp=list&<sas-token>
person Frank Gong    schedule 09.02.2021
comment
Спасибо @Frank, я последовал вашим указаниям и добавил контейнер в разрешенные типы ресурсов в SAS для учетных записей хранения на основе добавленного вами рисунка. Затем я создаю URL-адрес на основе размещенного вами формата. Похоже, это teststorageaccount21.blob.core Iwindows.net/ заголовок сформирован правильно, включая подпись. sr является обязательным. Не может быть пустым - person Sarah; 09.02.2021
comment
Вам необходимо удалить дополнительный?, используйте этот URL: https://teststorageaccount21.blob.core.windows.net/publicc?restype=container&comp=list&sv=2019-12-12&ss=bfqt&srt=c&sp=rwdlacupx&se=2021-02-10T02:38:55Z&st=2021-02-09T18:38:55Z&spr=https&sig=ln7mgDkOXAOIR8I5912sentBZcqgdFu4CPblsyK0pXA%3D - person Frank Gong; 10.02.2021
comment
Большое спасибо, что сработало. Ошибка аутентификации исчезла и отображается список в формате XML. Я не ожидал, что он отобразит их в формате XML. Есть ли способ показать список, чтобы пользователь мог видеть список в браузере, щелкать и открывать файлы? - person Sarah; 10.02.2021
comment
Если вы обращаетесь к контейнеру хранилища непосредственно из браузера, кажется, что нет лучшего API для отображения больших двоичных объектов. - person Frank Gong; 10.02.2021