【问题标题】:GetAsync using Basic Authentication even though I specify BearerGetAsync 使用基本身份验证,即使我指定了 Bearer
【发布时间】:2021-01-19 23:11:15
【问题描述】:

我有以下GetAsync,我正在尝试使用不记名令牌进行身份验证,但我收到了 403 响应。当我查看请求标头时,我可以看到 Authorization: Basic YWJjOmRlZg==

var client = new HttpClient(handler)
{
    BaseAddress = new Uri("https://api.myendpoint.com/v2/")
};
client.DefaultRequestHeaders.Authorization =
                new AuthenticationHeaderValue("Bearer", "token");
var httpResponseMessage = _myclient.GetAsync("instruments?country=US&type=BOND").GetAwaiter().GetResult();

令牌有效。我向邮递员证实了这一点。我还将它硬编码为AuthenticationHeaderValue,以确保我拥有正确的令牌。我想我认为我错误地传递了不记名令牌。

如何让它使用 Bearer 身份验证?

【问题讨论】:

  • 不确定您希望我们在这里提供什么帮助。我们不知道您正在与之交谈的 API 是如何工作的,也不知道您的令牌是否有效,也不知道为生成该令牌而提供的凭据是否允许您访问您尝试使用的资源。
  • 令牌变量在哪里?
  • 我在关于令牌的问题中添加了一些内容。
  • @runnerpaul 给出的答案确实解决了你的问题?

标签: c# .net authentication dotnet-httpclient getasync


【解决方案1】:

将令牌传递给标头(我目前正在使用此):

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

或类似的东西:

client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);

【讨论】:

    【解决方案2】:

    服务器抛出 HTTP 403 Forbidden 响应,因为它拒绝授权您的请求。这可能意味着您的不记名令牌中缺少某些声明或特定声明值。

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 2014-09-15
      • 2015-08-12
      • 2014-12-26
      • 1970-01-01
      • 2017-06-13
      • 2013-05-30
      • 2011-03-22
      • 1970-01-01
      相关资源
      最近更新 更多