【问题标题】:401 (Unauthorized) | Cosmos DB rest API | rest-from-.net401(未经授权)| Cosmos DB REST API | rest-from-.net
【发布时间】:2021-04-13 21:42:13
【问题描述】:

我正在为 Cosmos DB Table API 试用 rest-from-.net

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

line 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 标头。当 Authorization 标头设置为无效的授权令牌时也会返回 401。

为什么授权失败?

【问题讨论】:

    标签: c# azure rest azure-cosmosdb azure-table-storage


    【解决方案1】:

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

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

    以前的

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

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

    【讨论】:

    • 谢谢!我感谢您尝试帮助我。正如您所说,它不使用任何不记名令牌。您使用的 auth 标头生成方法与我在 here 中使用的方法相同
    • @ShridharRKulkarni 刚才测试的示例代码只是想解决401 (Unauthorized)的问题,大家可以试试,我觉得authHeader的值有问题。
    • 您分享的代码是针对 SQL API 而不是 Table API
    • @ShridharRKulkarni 官方提供了连接tableapi的示例代码。您尝试的代码是 sqlapi。我觉得就算可行,这种连接也很麻烦。
    • @ShridharRKulkarni 刚开始看到401错误,回答了你的问题。我一直以为是授权问题。现在我认为您引用的文档有问题。建议查看tableapi的示例代码。
    【解决方案2】:

    虽然Querying Azure Cosmos DB resources using the REST API 描述了 REST 用于 Cosmos DB,但这种 REST 的使用仅适用于 SQL API,不适用于 Gremlin、Cassandra 或 Table API。不幸的是,该文件没有提到这一点。因此,授权失败。而是参考Table Service REST API

    【讨论】:

      猜你喜欢
      • 2019-06-28
      • 1970-01-01
      • 2013-11-19
      • 2021-04-07
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多