流动客户端主题时如何在 C# HttpClient 中设置 OIDC/OAuth 不记名令牌
How to set OIDC/OAuth bearer token in C# HttpClient when flowing client subject
据我了解,HttpClient 被设计为创建一次并重复使用。我将 IdentityServer3 用作 OIDC/OAuth 服务器,我查看的示例为每个请求创建一个 HttpClient 并使用扩展方法设置承载令牌:
var client = new HttpClient();
client.SetBearerToken(token);
SetBearerToken 只是在 HttpClient:
上设置默认授权 header
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
我有一个 ASP.NET Web 应用程序调用 ASP.NET Web API 并且我已经配置它们以便在进行调用时客户端身份流向 API ,即在配置 OpenId 连接身份验证时,我设置:
OpenIdConnectAuthenticationOptions.ResponseType = "id_token token"
但是,如果主题声明是在令牌中传递的,我现在不能重用 HttpClient(例如,请求可以在被另一个请求发送之前覆盖其授权 header)。
如果我想重用 HttpClient,我应该将令牌设置到 HttpRequestMessage 中吗?如果不是,处理这种情况的推荐模式是什么?
您一定会想要创建自己的 HttpRequestMessage and use SendAsync。不幸的是,您将没有设置不记名令牌的扩展方法,但这是处理 HttpClient 的最佳方式。
据我了解,HttpClient 被设计为创建一次并重复使用。我将 IdentityServer3 用作 OIDC/OAuth 服务器,我查看的示例为每个请求创建一个 HttpClient 并使用扩展方法设置承载令牌:
var client = new HttpClient();
client.SetBearerToken(token);
SetBearerToken 只是在 HttpClient:
上设置默认授权 headerclient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
我有一个 ASP.NET Web 应用程序调用 ASP.NET Web API 并且我已经配置它们以便在进行调用时客户端身份流向 API ,即在配置 OpenId 连接身份验证时,我设置:
OpenIdConnectAuthenticationOptions.ResponseType = "id_token token"
但是,如果主题声明是在令牌中传递的,我现在不能重用 HttpClient(例如,请求可以在被另一个请求发送之前覆盖其授权 header)。
如果我想重用 HttpClient,我应该将令牌设置到 HttpRequestMessage 中吗?如果不是,处理这种情况的推荐模式是什么?
您一定会想要创建自己的 HttpRequestMessage and use SendAsync。不幸的是,您将没有设置不记名令牌的扩展方法,但这是处理 HttpClient 的最佳方式。