通过浏览器访问 Azure 存储帐户容器 - 获取身份验证错误

Azure storage account container access via browser- Getting authenticating error

我们希望能够让一些用户访问一个容器,他们可以在浏览器中看到他们的文件列表,点击它们来阅读它们。

我创建了一个存储帐户。具有 public 访问权限的容器,在容器中创建了几个 blob,并将容器 public 访问级别设置为读取。

但是当我尝试在浏览器中访问该容器时,出现以下错误。我在存储资源管理器中为它创建了一个 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 时,我可以毫无问题地访问它。

这个link可以用来看文件 https://teststorageaccount21.blob.core.windows.net/publicc/MyTest1.csv?sv=2019-12-12&st=2021-02-08T21%3A20%3A53Z&se=2021-03-09T21%3A20%3A00Z&sr=b&sp=r&sig=%2Bw8oi73NUU4w%2FqgSAsNvjVHwBi0SgaoQAK6%2BF8P8QQs%3D

为什么我无法在具有 public 访问权限的容器级别看到 blob 列表。另外,我需要帮助来理解该身份验证错误。不确定哪个签名不匹配。

你的SAS令牌是blob级别,你需要在容器级别生成SAS token

如果您在浏览器中按 https://<storage-account-name>.blob.core.windows.net/<container>?<sas-token> 列出 blob,您将收到错误消息:

<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>