URL SAS не работают

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

<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:d95bf34f-0001-0022-4430-b1a25b000000 Time:2016-05-18T18:12:30.5552096Z
</Message>
<AuthenticationErrorDetail>
Signature did not match. String to sign used was rl 2016-05-18T18:10:00Z 2016-05-19T18:10:00Z /blob/cloudappmanager/$root 2015-04-05
</AuthenticationErrorDetail>
</Error>

Я попробовал https://storageexplorer.com/ (щелкните правой кнопкой мыши контейнер, Get SAS, нажмите OK с настройками по умолчанию):

Я попробовал старый Storage Explorer:

И я попробовал PowerShell:

PS C:\Users\virklba> $context = New-AzureStorageContext -StorageAccountName msuscoreaprod 
cmdlet New-AzureStorageContext at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
StorageAccountKey: xxxxxxxxx

PS C:\Users\virklba> New-AzureStorageContainerSASToken -Name aadlogs -Context $context -FullUri -Permission rl
https://msuscoreaprod.blob.core.windows.net/aadlogs?sv=2015-04-05&sr=c&sig=xxxxxxxx&se=2016-05-18T19%3A47%3A56Z&sp=rl

Все с одинаковым результатом. Кто-нибудь еще видит это поведение, или это только я?

2 ответа

Решение

Вы создаете SAS для контейнера, и похоже, что вы пытаетесь прочитать контейнер в браузере. Когда я вставляю контейнер SAS в браузер, я получаю ту же ошибку, что и вы.

Контейнер SAS (с разрешениями на чтение) предоставляет доступ для чтения к большим объектам в контейнере. Поэтому вам нужно добавить имя большого двоичного объекта в SAS, прежде чем вставить его в браузер, чтобы прочитать большой двоичный объект.

Например, это не будет работать:

https://myaccount.blob.core.windows.net/lotsofblobs?st=2016-05-18T22%3A49%3A00Z&se=2016-05-19T22%3A59%3A00Z&sp=rl&sv=2015-04-05&sr=c&sig=62WHwaZGI60ub1hYcQyKg1%2FE%2F1w9HUrOPGorzoWDLvE%3D

Это работает, с myblob.txt, добавленным к базовому URL:

https://myaccount.blob.core.windows.net/lotsofblobs/myblob.txt?st=2016-05-18T22%3A49%3A00Z&se=2016-05-19T22%3A59%3A00Z&sp=rl&sv=2015-04-05&sr=c&sig=62WHwaZGI60ub1hYcQyKg1%2FE%2F1w9HUrOPGorzoWDLvE%3D

Также см. Подробное объяснение Гаурава Мантри здесь: подпись общего доступа Azure - подпись не совпадает

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

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