【发布时间】:2017-02-14 10:58:11
【问题描述】:
据我了解,HttpClient 旨在创建一次并重复使用。我使用 IdentityServer3 作为 OIDC/OAuth 服务器,我查看的示例为每个请求创建一个 HttpClient 并使用扩展方法设置承载令牌:
var client = new HttpClient();
client.SetBearerToken(token);
SetBearerToken 只是在 HttpClient 上设置默认授权标头:
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
我有一个调用 ASP.NET Web API 的 ASP.NET Web 应用程序,并且我已经对其进行了配置,以便在进行调用时(即配置我设置的 OpenId 连接身份验证时)客户端身份流向 API:
OpenIdConnectAuthenticationOptions.ResponseType = "id_token token"
但是,如果主题声明在令牌中传递,我现在无法重用 HttpClient(例如,在另一个请求发送之前,请求可能会覆盖其授权标头)。
如果我想重用 HttpClient,我应该将令牌设置为 HttpRequestMessage 吗?如果不是,处理这种情况的推荐模式是什么?
【问题讨论】:
标签: c# asp.net oauth identityserver3 openid-connect