使用Azure队列存储REST API(PUT方法)时认证失败问题求助
Azure存储队列迁移PUT请求认证失败解决方案
一、核心认证错误原因
你在目标存储账户的请求URL里使用了源存储账户的SAS令牌,SAS令牌与生成它的存储账户绑定,无法跨账户使用,这是导致AuthenticationFailed的直接原因。
二、修复认证问题的步骤
- 生成目标存储账户的SAS令牌:需包含
Queue服务权限,且至少勾选Create权限(创建队列必备),同时确保令牌有效期覆盖你的操作时间。 - 替换请求URL中的SAS令牌:将原URL里的
<SOURCE_STORAGE_SAS_TOKEN>替换为目标存储账户生成的SAS令牌。
三、请求头参数说明与设置方法
1. Date(或x-ms-date)
- 作用:用于验证请求时效性,Azure存储服务会校验该时间与服务器时间的偏差(默认允许15分钟内)。
- 设置方式:使用当前UTC时间,格式需符合RFC 1123标准,例如:
Wed, 06 Mar 2024 06:11:20 GMT。
2. x-ms-version
- 作用:指定Azure存储服务的API版本,确保请求与服务端兼容。
- 设置方式:使用当前支持的稳定版本,例如
2023-11-03。
3. x-ms-request-id
- 注意:这是服务端返回的响应头标识,不需要你在请求中设置。当请求成功或失败时,服务端会在响应头里返回该值,用于后续问题排查。
四、正确请求示例(curl命令)
curl -X PUT "https://deststore121.queue.core.windows.net/azure-webjobs-blobtrigger-csstechwebapp?<DESTINATION_SAS_TOKEN>" \ -H "x-ms-version: 2023-11-03" \ -H "x-ms-date: Wed, 06 Mar 2024 06:11:20 GMT"
内容的提问来源于stack exchange,提问作者Vaishnavi Vaishu
相关产品推荐
相关产品推荐

