[英]401 (Unauthorized) | Cosmos DB rest API | rest-from-.net
我正在为 Cosmos DB表 API 尝试 rest-from-.net 。
设置endpoint
、 masterKey
、 databaseId
、 collectionId
。 我正在使用内部资源 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).
我在 Azure Cosmos DB 帐户上有贡献者角色。
我已经阅读了关于堆栈溢出的这篇文章。
Querying Azure Cosmos DB resources using the REST API is for SQL API and not for Table API. 但我遵循了相关的提及部分。
未设置授权或 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.