Azure 存储共享访问签名 (SAS) REST API 是否需要授权 header

Is an authorization header required by the azure storage shared access signature (SAS) REST API

我需要 read/write 一个 azure 存储 table。 客户端程序配置为使用 read/write 远程 azure table.

的共享访问签名

任何人都可以给我一个很好的例子来说明如何构造授权 header 以使用 sas 吗? 我收到 HTTP 错误代码 403。

Microsoft 文档指定所有其余 API 都必须嵌入授权 header。默认情况下,文档建议我可以使用存储帐户访问密钥为授权 header 生成 HMAC-SHA 代码。我想我在这里遗漏了一些东西。

使用共享访问签名 (SAS) 的整个想法是保护存储帐户访问密钥。同时,文档似乎暗示存储帐户所有者需要提供帐户访问密钥,以便客户端可以使用访问密钥生成 HMAC-SHA 代码。我在这里错过了什么?任何人都可以在这里阐明一下吗?谢谢,

如果您在 request url 中使用 sas_token,则无需在 header 中提供 Authorization

如何检查应该提供哪个header?在 related api page -> go to the Request Headers 部分 -> 检查每个 header,如果 header 是必需的,那么它将在它的描述中描述。这是一个截图供您参考:

使用sas_token查询实体的步骤如下:

1.Generate sas_token 来自 Azure 门户。您可以参考下面的截图:

2.Check 其中 header 是必需的,根据 query-entities -> request-headers,我们知道 x-ms-date 是必需的(这里不需要 Authorization,因为我们使用 sas_token)。您可以为 x-ms-date 提供一个值,例如 Wed, 13 Jan 2021 01:29:31 GMT.

如果您不知道如何获取 x-ms-date header 的值,您可以打开 powershell -> 输入 Get-Date 命令 -> 然后它将生成日期:

3.Prepare 请求 url 和 sas_token,如下所示:

https://xxx.table.core.windows.net/testtable(PartitionKey='a1',RowKey='r11')?sv=2019-12-12&ss=t&srt=sco&sp=rwdlacu&se=2021-01-13T09:24:58Z&st=2021-01-13T01:24:58Z&spr=https&sig=xxxxx

4.Use 一些工具,如 Postman,使用适当的 header 发送请求。这是使用 Postman:

的测试结果