You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Blob容器Service SAS签名生成失败,请求排查问题

Azure Blob容器Service SAS签名错误排查

「Signature fields not well formed」错误排查

  • 严格核对待签名字符串的字段顺序:必须遵循Azure规定的固定顺序,正确顺序为SignedStart、SignedExpiry、SignedPermissions、SignedResource、SignedVersion、SignedService、SignedProtocol、SignedIP、SignedIdentifier、SignedSnapshotTime(快照场景),顺序错误直接触发格式问题。
  • 检查字段取值合法性:权限只能是r/w/d/l/a/c/u/p的组合;SignedResource对应容器时必须写c,不能用全称;日期必须是YYYY-MM-DDTHH:MM:SSZ的ISO 8601格式,不能有空格或格式偏差。
  • 排查冗余/缺失字段:如果没用到SignedIP或SignedIdentifier,不要在待签名字符串中添加空字段,直接跳过对应位置。

「Signature did not match」错误排查

  • 逐字符校验待签名字符串:对比Azure要求的格式,确保大小写、特殊字符、空格完全一致,比如sv(服务版本)必须和待签名字符串中的SignedVersion完全相同。
  • 确认存储账户密钥有效性:使用的必须是Azure门户存储账户「访问密钥」中的主/辅助密钥,不能是截断或修改后的密钥;复制时避免带入多余空格。
  • 验证签名生成流程:确保代码遵循正确的编码逻辑:
    const crypto = require('crypto');
    const accountKey = '你的存储账户密钥';
    const stringToSign = '你的待签名字符串';
    // 先解码密钥,再用HMAC-SHA256加密待签名字符串,最后Base64编码
    const decodedKey = Buffer.from(accountKey, 'base64');
    const signature = crypto.createHmac('sha256', decodedKey).update(stringToSign, 'utf8').digest('base64');
    
    重点检查是否用utf8编码待签名字符串,以及密钥是否正确Base64解码。
  • 核对请求URL参数:确保URL中的sr、sv、sp等参数和待签名字符串中的对应字段完全匹配,比如sp=r对应只读权限,不能写成sp=read。

内容的提问来源于stack exchange,提问作者Shankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:30:02