如何解决401未经授权| Cosmos DB 休息 API | .net 休息
我正在为 Cosmos DB Table API 试用 rest-from-.net。
设置 endpoint
、masterKey
、databaseId
、collectionId
。我正在使用内部资源 ID。将 x-ms-version
设为 2017-07-29。
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");
response = client.GetStringAsync(new Uri(baseUri,resourceLink)).Result;
在 GetStringAsync
调用中,我收到 401。
HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).
-
我在 Azure Cosmos DB 帐户上拥有贡献者角色。
-
Querying Azure Cosmos DB resources using the REST API 用于 sql API 而不是用于 Table API。但我遵循了相关提到的部分。
未设置 Authorization 或 x-ms-date 标头。当 Authorization 标头设置为无效的授权令牌时,也会返回 401。
为什么授权失败?
解决方法
新
您应该使用官方示例连接 cosmosdb 表。
azure-cosmos-table-dotnet-core-getting-started
原始
你应该像下面的代码一样添加熊令牌。
client.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("Bearer","Your Oauth token");
,
虽然 Querying Azure Cosmos DB resources using the REST API 描述了 Cosmos DB 的 REST 使用,但这种 REST 的使用仅适用于 SQL API,不适用于 Gremlin、Cassandra 或 Table API。不幸的是,该文件没有提到这一点。因此,授权失败。而是参考Table Service REST API。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。