如何在流动客户端主题时在C#HttpClient中设置OIDC / OAuth承载令牌
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在流动客户端主题时在C#HttpClient中设置OIDC / OAuth承载令牌相关的知识,希望对你有一定的参考价值。
据我所知,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的最佳方法。
以上是关于如何在流动客户端主题时在C#HttpClient中设置OIDC / OAuth承载令牌的主要内容,如果未能解决你的问题,请参考以下文章
通过 gmail api 发送电子邮件时在电子邮件主题中使用撇号创建问题
如何在 Blazor WASM 客户端中访问 Httpclient 标头