即使我指定了 Bearer,也使用基本身份验证 GetAsync

问题描述

我有以下 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 中以确保我拥有正确的令牌。我想我以为我错误地传递了不记名令牌。

如何让它使用承载身份验证?

解决方法

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

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

或类似的东西:

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

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