2016-10-05 4 views
2

HttpClient가 한 번 생성되어 다시 사용되도록 설계되었습니다. 나는 OIDC/OAuth를 서버로 IdentityServer3를 사용하고 나는 보았다 한 샘플은 요청 당 HttpClient를을 만들고 확장 방법을 사용하여 토큰 베어러를 설정합니다클라이언트 제목을 흐를 때 C# HttpClient에서 OIDC/OAuth 베어러 토큰을 설정하는 방법

var client = new HttpClient(); 
client.SetBearerToken(token); 

SetBearerToken 단순히 HttpClient를의 기본 인증 헤더가 설정을 : 구성 오픈 ID 인증을 연결할 때

client.DefaultRequestHeaders.Authorization = 
       new AuthenticationHeaderValue("Bearer", token); 

가 나는 ASP.NET 웹 API를 요구하는 ASP.NET 웹 응용 프로그램이 있고 그 클라이언트 ID가 호출이되는 API에 흐르는 그래서 내가 그들를 구성, 즉 내가 설정 :

OpenIdConnectAuthenticationOptions.ResponseType = "id_token token" 

그러나 제목 클레임이 토큰에 전달 된 경우 HttpClient를 다시 사용할 수 없습니다 (예 : 다른 요청에 의해 요청이 전송되기 전에 요청의 권한 헤더를 덮어 쓸 수 있음).

HttpClient를 다시 사용하려면 토큰을 HttpRequestMessage로 설정해야합니까? 이 시나리오를 처리 할 때 권장되는 패턴은 무엇입니까?

답변

1

자신 만의 HttpRequestMessage을 만들고 SendAsync을 사용하고 싶을 것입니다. 안타깝게도 베어러 토큰을 설정하는 확장 방법은 없지만 HttpClient를 처리하는 가장 좋은 방법입니다.

+0

나는 그것이 대답 일 것이라고 생각했다. HttpClientExtensions를 사용하고 있으므로 HttpClient.PostAsJsonAsync를 사용할 수 있습니다. 유사한 JSON 처리 확장 메소드를 사용하는 HttpRequestMessageExtensions가 있습니까? 아니면 내 자신을 롤업해야합니까? –

+0

공식적인 도서관에서 본 것은 아니지만 두렵습니다. 지금까지 모두 [StringContent] (https://msdn.microsoft.com/en-us/library/system.net.http.stringcontent (v = vs.118) .aspx)에 직렬화 된 JSON을 사용하여 자신 만의 상용구를 작성하는 데 어려움을 겪어 왔습니다.). –