繁体   English   中英

401(未经授权)| 宇宙DB rest API | rest-from-.net

[英]401 (Unauthorized) | Cosmos DB rest API | rest-from-.net

我正在为 Cosmos DB表 API 尝试 rest-from-.net

设置endpointmasterKeydatabaseIdcollectionId 我正在使用内部资源 ID。 x-ms-version设置为2017-07-29

第 84 行之前添加了以下内容。

client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Add("ContentType", "application/json");

现在,它如下所示:

client.DefaultRequestHeaders.Add("x-ms-date", utc_date);
client.DefaultRequestHeaders.Add("x-ms-version", "2017-07-29");

//LIST all databases
verb = "GET";
resourceType = "dbs";
resourceId = string.Empty;
resourceLink = string.Format("dbs");

authHeader = GenerateMasterKeyAuthorizationSignature(verb, resourceId, resourceType, masterKey, "master", "1.0");

client.DefaultRequestHeaders.Remove("authorization");
client.DefaultRequestHeaders.Add("authorization", authHeader);
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Add("ContentType", "application/json");

response = client.GetStringAsync(new Uri(baseUri, resourceLink)).Result;

GetStringAsync调用中,我得到 401。

HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).

未设置授权或 x-ms-date header。 当 Authorization header 设置为无效的授权令牌时,也会返回 401。

为什么授权失败?

新的

您应该使用官方示例连接 cosmosdb 表。

azure-cosmos-table-dotnet-core-getting-started

在此处输入图像描述

以前的

您应该像下面的代码一样添加熊令牌。

client.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("Bearer", "Your Oauth token");

Though Querying Azure Cosmos DB resources using the REST API describes usage of REST for Cosmos DB, such use of REST is possible only for SQL API not for Gremlin, Cassandra or Table API. 不幸的是,该文件没有提到这一点。 因此,授权失败。 而是参考表服务 REST API

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM