【发布时间】:2021-09-03 09:30:31
【问题描述】:
我正在用 C# 编写一个 Windows 服务,它需要通过 API 进行身份验证并进行一些调用。我能够使用我正在与之交谈的这个 API 成功地进行身份验证,但我似乎无法弄清楚如何使用响应。响应如下所示:
{"access_token":"Es-Zjs_LI0tcXyLe3aEfgKPNLHN7CwyUhTss-cTld1A","expires_in":1800,"token_type":"Bearer","scope":"example","auth_state":1,"company":"examplecompany"}
如果我愿意,我可以从该字符串中获取访问令牌,但无论我如何将它传递给请求,我都会收到 401 错误。这是我当前迭代的样子:
string results = "";
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",token);
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://example.ca/endpoint"),
//Headers =
//{
// { "authorization", "Bearer"},
//},
};
try
{
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
results = body;
}
}
catch (Exception ex)
{
results = "ERROR: " + ex.Message;
}
return results;
在此示例中,“token”是字符串“Es-Zjs_LI0tcXyLe3aEfgKPNLHN7CwyUhTss-cTld1A”。我之前曾尝试将 access_token 值作为字符串拼接到中间注释掉的部分中的“Bearer”字符串。我究竟做错了什么?我需要从响应中制作一个 JwtSecurityToken 吗?
【问题讨论】:
标签: c# api openid-connect bearer-token