
本文档旨在帮助开发者解决在使用 JavaScript 生成 Azure Blob 存储的共享访问签名 (SAS) 令牌时遇到的签名不匹配问题。通过本文,你将了解如何正确构建签名字符串,并生成有效的 SAS 令牌,从而成功访问 Azure Blob 存储资源。
Azure 共享访问签名 (SAS) 令牌是一种安全地委托对 Azure 存储资源的访问权限的机制。它允许你授予对特定资源的有限访问权限,而无需共享你的存储帐户密钥。SAS 令牌包含访问资源所需的全部信息,包括权限、有效期和签名。
当你在使用 SAS 令牌访问 Azure Blob 存储资源时,如果遇到 "Signature did not match" 错误,这通常意味着生成的 SAS 令牌的签名与 Azure 存储服务计算的签名不一致。 这可能是由于以下原因造成的:
以下是一个使用 JavaScript 生成 Azure Blob 存储 SAS 令牌的示例代码,并详细解释了关键步骤:
var CryptoJS = require("crypto-js");
var blobAccount = 'YOUR_ACCOUNT_NAME'; // 替换为你的存储帐户名称
var blobContainer = 'YOUR_CONTAINER_NAME/YOUR_FILE_PATH'; // 替换为你的容器名称和文件路径
var storageAccountKey = 'YOUR_ACCOUNT_KEY'; // 替换为你的存储帐户密钥
// 计算过期时间
var currentDate = new Date();
var expiration = new Date(currentDate.getTime() + (24 * 60 * 60 * 1000)); // 设置为 24 小时后过期
var st = currentDate.toISOString().slice(0, 19) + 'Z'; // 开始时间 (UTC)
var se = expiration.toISOString().slice(0, 19) + 'Z'; // 结束时间 (UTC)
var sv = '2018-11-09'; // 存储服务版本
var sp = 'r'; // 权限 (read)
var sr = 'c'; // 资源类型 (container)
// 构建 Canonicalized Resource
var canonicalizedResource = "/blob/" + blobAccount + "/" + blobContainer;
// 构建签名字符串
var stringToSign = sp + '\n' +
st + '\n' +
se + '\n' +
canonicalizedResource + '\n' +
sv + '\n' +
sr + '\n' +
'\n' + '\n' + '\n' + '\n' + '\n' + '\n' + '\n';
// 计算签名
var signature = CryptoJS.HmacSHA256(stringToSign, CryptoJS.enc.Base64.parse(storageAccountKey)).toString(CryptoJS.enc.Base64);
// 构建 SAS 令牌
var sasToken = "sig=" + encodeURIComponent(signature) +
"&st=" + st.replaceAll(':', '%3A') +
"&se=" + se.replaceAll(':', '%3A') +
"&sv=" + sv +
"&sp=" + sp +
"&sr=" + sr;
// 构建完整的 URL
var url = "https://" + blobAccount + ".blob.core.windows.net/" + blobContainer + "?" + sasToken;
console.log("SAS Token:", sasToken);
console.log("URL:", url);代码解释:
关键注意事项:
如果仍然遇到签名不匹配问题,可以尝试以下调试步骤:
生成正确的 Azure Blob 存储 SAS 令牌需要仔细构建签名字符串,并确保所有参数都正确设置。 通过理解 SAS 令牌的工作原理,并遵循本文档中的步骤,你可以成功生成有效的 SAS 令牌,并安全地访问 Azure Blob 存储资源。 记住,安全性至关重要,请务必采取适当的措施来保护你的存储帐户密钥。
以上就是Azure Blob 存储 SAS 令牌生成及签名不匹配问题排查的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号