簡體   English   中英

流動客戶端主題時如何在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 上設置默認授權標頭:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM