@@ -27,6 +27,8 @@ internal class AuthenticationHandler : DelegatingHandler
27
27
private const string BearerAuthenticationScheme = "Bearer" ;
28
28
private const string PopAuthenticationScheme = "Pop" ;
29
29
private int MaxRetry { get ; set ; } = 1 ;
30
+ private PopTokenRequestContext popTokenRequestContext ;
31
+ private Request popRequest = GraphSession . Instance . GraphRequestPopContext . PopPipeline . CreateRequest ( ) ;
30
32
31
33
public AzureIdentityAccessTokenProvider AuthenticationProvider { get ; set ; }
32
34
@@ -53,7 +55,7 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
53
55
// Continuous nonce extraction on each request
54
56
if ( GraphSession . Instance . GraphOption . EnableATPoPForMSGraph )
55
57
{
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 ) ;
57
59
}
58
60
59
61
// Check if response is a 401 & is not a streamed body (is buffered)
@@ -76,14 +78,14 @@ private async Task AuthenticateRequestAsync(HttpRequestMessage httpRequestMessag
76
78
{
77
79
if ( GraphSession . Instance . GraphOption . EnableATPoPForMSGraph )
78
80
{
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 ) ;
81
83
foreach ( var header in httpRequestMessage . Headers )
82
84
{
83
- GraphSession . Instance . GraphRequestPopContext . Request . Headers . Add ( header . Key , header . Value . First ( ) ) ;
85
+ popRequest . Headers . Add ( header . Key , header . Value . First ( ) ) ;
84
86
}
85
87
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 ) ;
87
89
httpRequestMessage . Headers . Authorization = new AuthenticationHeaderValue ( PopAuthenticationScheme , accessToken . Token ) ;
88
90
}
89
91
else
0 commit comments