开启公共访问的Azure Blob URL携带Authorization请求头时无法访问
核心结论
Azure Blob存储没有提供配置项可以让服务端忽略请求携带的Authorization头,该行为是官方预设的安全逻辑,无法直接修改。
运行逻辑说明
当请求Blob资源时,服务端的权限判断规则如下:
- 若请求未携带
Authorization头:服务端会优先判断容器的公共访问权限,权限符合要求就直接返回对应资源 - 若请求携带了任意
Authorization头:服务端会优先执行身份验证逻辑,只要校验不通过(哪怕是虚构的无效头),都会直接返回403错误,不会降级到公共访问逻辑。该设计是为了避免权限绕过、身份上下文泄漏等安全风险。
可行解决方法
- 反向代理/CDN层移除头:如果是中间层(比如Azure CDN、Azure Front Door、自建反向代理)转发请求时意外携带了
Authorization头,可以配置转发规则,在请求发往存储源站之前直接移除Authorization头 - 客户端侧调整:访问公共Blob资源时,客户端主动不携带
Authorization头即可正常访问公共资源

内容的提问来源于stack exchange,提问作者Angela
相关产品推荐
相关产品推荐

