问题描述
我有以下 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 响应,因为它拒绝授权您的请求。这可能意味着您的不记名令牌中缺少某些声明或特定声明值。