Azure Blob GET请求授权头"x-ms-date"字段问题

9
我正在尝试使用Postman获取存储在Azure Blob Storage中的html页面。默认的Blob存储访问权限已设置为私有,因此我必须在标题部分发送“Shared Key”、“x-ms-version”和“x-ms-date”以进行授权。

以下是Postman请求的屏幕截图。

enter image description here

当我点击发送按钮时,出现错误提示:“请求中的日期标头不正确”。

enter image description here

任何解决此问题的想法吗?
更新-更正日期格式
我更正了“x-ms-date”格式,现在它会抛出一个错误,指出身份验证信息不是正确的格式。

enter image description here

这是 Postman 的授权部分。

enter image description here

感谢您的帮助。

你是如何计算授权头部值的? - Gaurav Mantri
看起来你还没有获取你的令牌。"SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08="需要放在Postman的授权选项卡中,而不是头部选项卡中。 - user5780947
它的字面含义是告诉你授权格式不正确。这是因为“SharedKey account:XXXXXXXXXXXXXXXXXXXXXXXXXXXX”不是正确的格式。 - user5780947
1
你不应该使用 "SharedKey account",而应该使用类似于 "SharedKey {{storageAccountName}}:{{signedSignature}}" 的格式。另外,出于安全考虑,你的密钥应该进行哈希处理。 - user5780947
显示剩余2条评论
4个回答

5
请查看文档
您需要指定两个标题以进行正确的请求:Authorization和x-ms-date头。 x-ms-date头的正确格式为Fri, 26 Jun 2015 23:39:12 GMT
似乎您的Authorization头无效。 尝试重新生成SAS密钥并再次测试请求。
据我所知,您只有15分钟的请求时间。
从文档中得知:
存储服务确保请求在到达服务时不超过15分钟。 这可以防止某些安全攻击,包括重放攻击。 当此检查失败时,服务器返回响应代码403(禁止)。

15分钟的时间是客户端发起请求(从x-ms-date获取)到服务器处理请求的最大允许时间。这个15分钟的截止时间有助于微软避免重放攻击(https://en.wikipedia.org/wiki/Replay_attack)。 - Subbi reddy dwarampudi

3

格式为 Fri, 26 Jun 2015 23:39:12 GMT。在Python中,可以通过以下方式获取:

import datetime
date = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')

假设当前地区为en_US

1

x-ms-date头必须按以下格式指定:Fri,26 Jun 2015 23:39:12 GMT。

请使用此格式再次尝试您的请求。


0
您应该拥有的格式是: Thu Apr 7 16:55:44 CET 2022


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接