如何在流动客户端主题时在C#HttpClient中设置OIDC / OAuth承载令牌

问题描述 投票:2回答:1

据我所知,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吗?如果不是,处理此方案的推荐模式是什么?

c# asp.net oauth identityserver3 oidc
1个回答
1
投票

你一定要创建自己的HttpRequestMessage并使用SendAsync。不幸的是,您将没有用于设置承载令牌的扩展方法,但它是处理HttpClient的最佳方法。

© www.soinside.com 2019 - 2024. All rights reserved.