This repository was archived by the owner on Sep 8, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +42
-13
lines changed
clients/ConsoleClientWithBrowserAndDPoP Expand file tree Collapse file tree 3 files changed +42
-13
lines changed Original file line number Diff line number Diff line change @@ -38,9 +38,6 @@ private static async Task SignIn()
3838
3939 var proofKey = GetProofKey ( ) ;
4040
41- var tokenDpopHandler = new ProofTokenMessageHandler ( proofKey , new SocketsHttpHandler ( ) ) ;
42- var apiDpopHandler = new ProofTokenMessageHandler ( proofKey , new SocketsHttpHandler ( ) ) ;
43-
4441 var options = new OidcClientOptions
4542 {
4643 Authority = Authority ,
@@ -49,11 +46,10 @@ private static async Task SignIn()
4946 Scope = "openid profile api offline_access" ,
5047 FilterClaims = false ,
5148 Browser = browser ,
52-
53- BackchannelHandler = tokenDpopHandler ,
54- RefreshTokenInnerHttpHandler = apiDpopHandler
5549 } ;
5650
51+ options . ConfigureDPoP ( proofKey ) ;
52+
5753 var serilog = new LoggerConfiguration ( )
5854 . MinimumLevel . Debug ( )
5955 . Enrich . FromLogContext ( )
@@ -68,13 +64,7 @@ private static async Task SignIn()
6864 if ( File . Exists ( "refresh_token" ) )
6965 {
7066 var refreshToken = File . ReadAllText ( "refresh_token" ) ;
71-
72- var handler = new RefreshTokenDelegatingHandler (
73- _oidcClient ,
74- null ,
75- refreshToken ,
76- "DPoP" ,
77- apiDpopHandler ) ;
67+ var handler = _oidcClient . CreateDPoPHandler ( proofKey , refreshToken ) ;
7868
7969 _apiClient = new HttpClient ( handler )
8070 {
Original file line number Diff line number Diff line change 4747 <PackageReference Include =" Microsoft.SourceLink.GitHub" Version =" 1.1.1" PrivateAssets =" All" />
4848 </ItemGroup >
4949
50+ <ItemGroup >
51+ <ProjectReference Include =" ..\OidcClient\OidcClient.csproj" />
52+ </ItemGroup >
53+
5054</Project >
Original file line number Diff line number Diff line change 1+ using System . Net . Http ;
2+
3+ namespace IdentityModel . OidcClient . DPoP ;
4+
5+ public static class OidcClientExtensions
6+ {
7+ public static void ConfigureDPoP ( this OidcClientOptions options ,
8+ string proofKey ,
9+ HttpMessageHandler ? tokenEndpointInnerHandler = null ,
10+ HttpMessageHandler ? apiInnerHandler = null )
11+ {
12+ var tokenDpopHandler = new ProofTokenMessageHandler ( proofKey , tokenEndpointInnerHandler ?? new HttpClientHandler ( ) ) ;
13+ var apiDpopHandler = new ProofTokenMessageHandler ( proofKey , apiInnerHandler ?? new HttpClientHandler ( ) ) ;
14+
15+ options . BackchannelHandler = tokenDpopHandler ;
16+ options . RefreshTokenInnerHttpHandler = apiDpopHandler ;
17+ }
18+
19+ public static HttpMessageHandler CreateDPoPHandler ( this OidcClient client ,
20+ string proofKey ,
21+ string refreshToken ,
22+ HttpMessageHandler ? apiInnerHandler = null )
23+ {
24+ var apiDpopHandler = new ProofTokenMessageHandler ( proofKey , apiInnerHandler ?? new HttpClientHandler ( ) ) ;
25+
26+ var handler = new RefreshTokenDelegatingHandler (
27+ client ,
28+ null ,
29+ refreshToken ,
30+ "DPoP" ,
31+ apiDpopHandler ) ;
32+
33+ return handler ;
34+ }
35+ }
You can’t perform that action at this time.
0 commit comments