[英]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 上設置默認授權標頭:
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
我有一個調用 ASP.NET Web API 的 ASP.NET Web 應用程序,並且我已經配置了它們,以便在進行調用時客戶端身份流向 API,即在配置 OpenId 連接身份驗證時,我設置了:
OpenIdConnectAuthenticationOptions.ResponseType = "id_token token"
但是,如果主題聲明在令牌中傳遞,我現在不能重用 HttpClient (例如,一個請求可能會在它被另一個請求發送之前覆蓋其授權標頭)。
如果我想重用 HttpClient,我應該將令牌設置為 HttpRequestMessage 嗎? 如果不是,處理這種情況的推薦模式是什么?
您肯定希望創建自己的HttpRequestMessage並使用SendAsync 。 不幸的是,您將沒有設置承載令牌的擴展方法,但它是處理 HttpClient 的最佳方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.