Azure Storage Account 共享访问签名(SAS)报错咨询
Azure存储账户SAS签名不匹配错误解析
这个报错的本质是:你生成SAS时用的签名字符串,和Azure服务端验证时生成的字符串对不上,导致签名校验失败。
常见问题点和排查方向
- 签名字符串格式错误:
SAS的签名字符串有固定顺序,必须严格按「权限&起始时间&过期时间&资源路径&签名字符串版本&协议&API版本」的规则排列(不同类型SAS可能略有差异)。对照报错里的字符串逐一检查:- 权限位(比如报错里的
rwdlacup):确认是否和生成SAS时指定的权限完全一致,不要多写或漏写权限标识 - 时间范围:起始、过期时间必须是UTC格式,且当前时间要落在这个区间内,别误用本地时间
- 资源路径:
/blob/<账户名>/<容器名>要核对存储账户名、容器名是否拼写正确,路径里的斜杠不要多打或少打 - API版本:字符串里的版本号(比如
2022-11-02)要和生成SAS时选择的版本一致,同时匹配请求使用的SDK/工具的API版本
- 权限位(比如报错里的
- 协议不匹配:
生成SAS时如果指定了仅允许HTTPS,实际请求就不能用HTTP;反之如果指定了HTTP/HTTPS兼容,也不要违反规则 - 特殊字符未编码:
如果容器名或Blob名包含特殊字符,必须先按URL编码规则处理,再加入签名字符串 - 使用错误密钥:
检查生成SAS时用的存储账户主密钥/副密钥是否正确,有没有后续修改过密钥但仍在使用旧SAS的情况
快速验证方法
可以手动按规则构造签名字符串,用同一个密钥重新生成签名,和现有SAS的签名部分对比是否一致;也可以用Azure存储管理器重新生成SAS,对比参数和之前的配置是否存在差异。
内容的提问来源于stack exchange,提问作者Andrew Duffy
相关产品推荐
相关产品推荐

