gpt4 book ai didi

azure - 如何将 Azure Cosmos DB REST(数据平面)API 与 AAD RBAC 结合使用?

转载 作者:行者123 更新时间:2023-12-03 02:22:53 25 4
gpt4 key购买 nike

我正在尝试按照 these instructions 发出 REST 请求其中指出“2021 年 3 月 15 日版本的 REST API 目前支持 Azure Cosmos DB RBAC”。然而,当我发出请求时,我收到响应“无效的 API 版本。确保传递有效的 x-ms-version header 值。”

根据this “最新版本”是 2017-02-22,但还有许多更新的版本,其中最新版本是 2018-12-31。如果我切换到 2018-12-31,我会收到错误“请求被 Auth hts 阻止:提供的 token 没有有效的签名。请确保 AAD token 在使用前未被修改。”

更新:根据评论中的要求,我添加了一些(Dart)代码:

  Future<String> getCollections() async {
await waitForInitialization();
var url = 'https://$_account.documents.azure.com/dbs/$databaseName/colls/';
var uri = Uri.parse(url);
var headers = {
'Authorization': 'type=aad&ver=1.0&sig=$_token',
'Content-Type': 'application/json',
'x-ms-version': '2021-03-15',
};
var response;
try {
response = await http.get(uri, headers: headers);
} catch (e) {
throw StateError(e.toString());
}
if (response.statusCode != 200) {
throw StateError(response.body);
}
return response.body;
}

最佳答案

我知道这已经很老了,但如果有人偶然发现这个问题,我在 Powershell 中有一个工作示例。 https://github.com/ArunasFalcon/CosmosDBRBACQueryTool

需要了解的基本内容:

最棘手的部分是弄清楚如何生成 auth header 。

尝试使用 RBAC 登录 Cosmos DB 的帐户必须请求 AAD token ,范围为 https://cosmos.azure.com ,授权头由url编码type=aad&ver=1.0&sig=<the token>生成.

在 cosmos db Rest api 上运行查询时遇到的一些问题:

必须提供以下 header :

  • "x-ms-version" = "2018-12-31"
  • "x-ms-date"根据 RFC1123 模式, header 必须包含当前日期
  • "x-ms-documentdb-isquery" = "True"
  • "Content-Type" = "application/query+json"供查询

查看完整的 header 列表 Common Azure Cosmos DB REST request headers

还有一个list of queries that cannot be served by gateway其中包括(在撰写本文时)非常重要的内容,例如 offset limit , group byorder by .

关于azure - 如何将 Azure Cosmos DB REST(数据平面)API 与 AAD RBAC 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68182956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com