@@ -27,6 +27,8 @@ internal class AuthenticationHandler : DelegatingHandler
2727 private const string BearerAuthenticationScheme = "Bearer" ;
2828 private const string PopAuthenticationScheme = "Pop" ;
2929 private int MaxRetry { get ; set ; } = 1 ;
30+ private PopTokenRequestContext popTokenRequestContext ;
31+ private Request popRequest = GraphSession . Instance . GraphRequestPopContext . PopPipeline . CreateRequest ( ) ;
3032
3133 public AzureIdentityAccessTokenProvider AuthenticationProvider { get ; set ; }
3234
@@ -53,7 +55,7 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
5355 // Continuous nonce extraction on each request
5456 if ( GraphSession . Instance . GraphOption . EnableATPoPForMSGraph )
5557 {
56- GraphSession . Instance . GraphRequestPopContext . PopTokenContext = new PopTokenRequestContext ( GraphSession . Instance . AuthContext . Scopes , isProofOfPossessionEnabled : true , proofOfPossessionNonce : WwwAuthenticateParameters . CreateFromAuthenticationHeaders ( response . Headers , PopAuthenticationScheme ) . Nonce , request : GraphSession . Instance . GraphRequestPopContext . Request ) ;
58+ popTokenRequestContext = new PopTokenRequestContext ( GraphSession . Instance . AuthContext . Scopes , isProofOfPossessionEnabled : true , proofOfPossessionNonce : WwwAuthenticateParameters . CreateFromAuthenticationHeaders ( response . Headers , PopAuthenticationScheme ) . Nonce , request : popRequest ) ;
5759 }
5860
5961 // Check if response is a 401 & is not a streamed body (is buffered)
@@ -76,14 +78,14 @@ private async Task AuthenticateRequestAsync(HttpRequestMessage httpRequestMessag
7678 {
7779 if ( GraphSession . Instance . GraphOption . EnableATPoPForMSGraph )
7880 {
79- GraphSession . Instance . GraphRequestPopContext . Request . Method = RequestMethod . Parse ( httpRequestMessage . Method . Method . ToUpper ( ) ) ;
80- GraphSession . Instance . GraphRequestPopContext . Request . Uri . Reset ( httpRequestMessage . RequestUri ) ;
81+ popRequest . Method = RequestMethod . Parse ( httpRequestMessage . Method . Method . ToUpper ( ) ) ;
82+ popRequest . Uri . Reset ( httpRequestMessage . RequestUri ) ;
8183 foreach ( var header in httpRequestMessage . Headers )
8284 {
83- GraphSession . Instance . GraphRequestPopContext . Request . Headers . Add ( header . Key , header . Value . First ( ) ) ;
85+ popRequest . Headers . Add ( header . Key , header . Value . First ( ) ) ;
8486 }
8587
86- var accessToken = await GraphSession . Instance . GraphRequestPopContext . PopInteractiveBrowserCredential . GetTokenAsync ( GraphSession . Instance . GraphRequestPopContext . PopTokenContext , cancellationToken ) . ConfigureAwait ( false ) ;
88+ var accessToken = await GraphSession . Instance . GraphRequestPopContext . PopInteractiveBrowserCredential . GetTokenAsync ( popTokenRequestContext , cancellationToken ) . ConfigureAwait ( false ) ;
8789 httpRequestMessage . Headers . Authorization = new AuthenticationHeaderValue ( PopAuthenticationScheme , accessToken . Token ) ;
8890 }
8991 else
0 commit comments