如何在c# HttpClient中设置OIDC/OAuth承载令牌
本文关键字:OAuth 令牌 OIDC 设置 HttpClient | 更新日期: 2023-09-27 18:11:57
据我所知,HttpClient被设计为创建一次并重用。我使用IdentityServer3作为OIDC/OAuth服务器,我看过的示例为每个请求创建一个HttpClient,并使用扩展方法设置承载令牌:
var client = new HttpClient();
client.SetBearerToken(token);
SetBearerToken简单地在HttpClient上设置默认的授权头:
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
我有ASP。. NET web应用程序调用ASP。. NET Web API,我已经配置了它们,以便在调用时客户端身份流到API,即在配置OpenId连接身份验证时,我设置:
OpenIdConnectAuthenticationOptions.ResponseType = "id_token token"
然而,如果主题声明在令牌中传递,我现在就不能重用HttpClient(例如,请求可以在另一个请求发送之前覆盖其授权头)。
如果我想重用HttpClient,我应该设置令牌到HttpRequestMessage?如果没有,建议使用什么模式来处理此场景?
你肯定想要创建你自己的HttpRequestMessage并使用SendAsync。不幸的是,您没有用于设置承载令牌的扩展方法,但这是处理HttpClient的最佳方法。