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

CosmosDB REST API获取文档时Auth Token授权失败求助

解决CosmosDB REST API授权失败问题

看起来你遇到的核心问题是生成授权令牌时的resourceLink参数错误,同时还存在请求日期不一致的问题,咱们一步步拆解解决:

1. 错误根源:ResourceLink与服务器期望不匹配

从错误信息里能看到,服务器用来校验签名的payload是:

'get\ndocs\ndbs/vacancies/colls/items\nthu, 18 jan 2018 14:31:43 gmt\n\n'

但你调用GenerateAuthToken时传入的resourceLink是"dbs/vacancies/colls/items/docs"——这里多了末尾的/docs。

在CosmosDB的授权规则里:

  • ResourceLink指的是你要操作的父资源路径(这里是集合的路径:dbs/vacancies/colls/items)
  • ResourceType才是你要操作的具体资源类型(这里是docs,对应获取文档的操作)

请求URL里需要加/docs来指定获取集合下的文档,但生成签名时的resourceLink只需要到集合层级就够了。

2. 正确的授权令牌生成调用

你需要把GenerateAuthToken的第三个参数修改为集合路径,去掉末尾的/docs:

GenerateAuthToken("GET", "docs", "dbs/vacancies/colls/items", "masterkey", "master", "1.0");

3. 确保x-ms-date完全一致

另外注意,错误信息里服务器用的日期是thu, 18 jan 2018 14:31:43 gmt,但你请求头里的x-ms-date是thu, 18 jan 2018 10:53:23 gmt——这两个日期必须完全相同,包括格式(比如月份小写、逗号后加空格、GMT大写等)。生成令牌时用的日期必须和请求头里的x-ms-date严格一致,否则签名校验肯定失败。

4. 确认请求URL和请求头正确性

你的请求URL是没问题的:
https://mycosmosdbaccount.documents.azure.com/dbs/vacancies/colls/items/docs

请求头要确保:

  • x-ms-version:2017-02-22(版本兼容,无需调整)
  • Accept:application/json
  • 用修改后的参数重新生成的Authorization令牌
  • x-ms-date与生成令牌时使用的日期完全一致

按照这个修改后,应该就能顺利通过授权获取到集合里的文档了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:34:16