Skip to content

Commit 88788c1

Browse files
Resolving comments regarding static instance
1 parent 26496db commit 88788c1

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-16
lines changed

src/Authentication/Authentication.Core/Interfaces/IGraphRequestPopContext.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// ------------------------------------------------------------------------------
44

55
using Azure.Core;
6+
using Azure.Core.Pipeline;
67
using Azure.Identity;
78
using System;
89
using System.Net.Http;
@@ -14,8 +15,7 @@ public interface IGraphRequestPopContext
1415
Uri Uri { get; set; }
1516
HttpMethod HttpMethod { get; set; }
1617
AccessToken AccessToken { get; set; }
17-
PopTokenRequestContext PopTokenContext { get; set; }
18-
Request Request { get; set; }
18+
HttpPipeline PopPipeline { get; set; }
1919
InteractiveBrowserCredential PopInteractiveBrowserCredential { get; set; }
2020
}
2121
}

src/Authentication/Authentication.Core/Utilities/AuthenticationHelpers.cs

+8-7
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,10 @@ private static async Task<InteractiveBrowserCredential> GetInteractiveBrowserCre
126126
interactiveOptions.TokenCachePersistenceOptions = GetTokenCachePersistenceOptions(authContext);
127127

128128
var interactiveBrowserCredential = new InteractiveBrowserCredential(interactiveOptions);
129+
var popTokenRequestContext = new PopTokenRequestContext();
129130
if (GraphSession.Instance.GraphOption.EnableATPoPForMSGraph)
130131
{
131-
GraphSession.Instance.GraphRequestPopContext.PopTokenContext = await CreatePopTokenRequestContext(authContext);
132+
popTokenRequestContext = await CreatePopTokenRequestContext(authContext);
132133
GraphSession.Instance.GraphRequestPopContext.PopInteractiveBrowserCredential = interactiveBrowserCredential;
133134
}
134135

@@ -143,7 +144,7 @@ private static async Task<InteractiveBrowserCredential> GetInteractiveBrowserCre
143144
authRecord = await Task.Run(() =>
144145
{
145146
// Run the thread in MTA.
146-
return interactiveBrowserCredential.AuthenticateAsync(GraphSession.Instance.GraphRequestPopContext.PopTokenContext, cancellationToken);
147+
return interactiveBrowserCredential.AuthenticateAsync(popTokenRequestContext, cancellationToken);
147148
});
148149
}
149150
else
@@ -487,13 +488,13 @@ private static async Task<PopTokenRequestContext> CreatePopTokenRequestContext(I
487488

488489
});
489490

490-
var _popPipeline = HttpPipelineBuilder.Build(popPipelineOptions, new HttpPipelineTransportOptions());
491-
GraphSession.Instance.GraphRequestPopContext.Request = _popPipeline.CreateRequest();
492-
GraphSession.Instance.GraphRequestPopContext.Request.Method = RequestMethod.Parse(popMethod.Method.ToUpper());
493-
GraphSession.Instance.GraphRequestPopContext.Request.Uri.Reset(popResourceUri);
491+
GraphSession.Instance.GraphRequestPopContext.PopPipeline = HttpPipelineBuilder.Build(popPipelineOptions, new HttpPipelineTransportOptions());
492+
var popRequest = GraphSession.Instance.GraphRequestPopContext.PopPipeline.CreateRequest();
493+
popRequest.Method = RequestMethod.Parse(popMethod.Method.ToUpper());
494+
popRequest.Uri.Reset(popResourceUri);
494495

495496
// Refresh token logic --- end
496-
var popContext = new PopTokenRequestContext(authContext.Scopes, isProofOfPossessionEnabled: true, proofOfPossessionNonce: WwwAuthenticateParameters.CreateFromAuthenticationHeaders(popResponse.Headers, "Pop").Nonce, request: GraphSession.Instance.GraphRequestPopContext.Request);
497+
var popContext = new PopTokenRequestContext(authContext.Scopes, isProofOfPossessionEnabled: true, proofOfPossessionNonce: WwwAuthenticateParameters.CreateFromAuthenticationHeaders(popResponse.Headers, "Pop").Nonce, request: popRequest);
497498
return popContext;
498499
}
499500
}

src/Authentication/Authentication/Handlers/AuthenticationHandler.cs

+7-5
Original file line numberDiff line numberDiff line change
@@ -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

src/Authentication/Authentication/Models/GraphRequestPopContext.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// ------------------------------------------------------------------------------
44

55
using Azure.Core;
6+
using Azure.Core.Pipeline;
67
using Azure.Identity;
78
using System;
89
using System.IO;
@@ -15,8 +16,7 @@ internal class GraphRequestPopContext : IGraphRequestPopContext
1516
public Uri Uri { get; set; }
1617
public HttpMethod HttpMethod { get; set; }
1718
public AccessToken AccessToken { get; set; }
18-
public PopTokenRequestContext PopTokenContext { get; set; }
19-
public Request Request { get; set; }
19+
public HttpPipeline PopPipeline { get; set; }
2020
public InteractiveBrowserCredential PopInteractiveBrowserCredential { get; set; }
2121
}
2222

0 commit comments

Comments
 (0)