@@ -136,16 +136,32 @@ private static async Task<InteractiveBrowserCredential> GetInteractiveBrowserCre
136
136
if ( IsATPoPSupported ( ) )
137
137
{
138
138
// Logic to implement ATPoP Authentication
139
- var client = new PopClient ( interactiveBrowserCredential , authContext , new PopClientOptions ( )
140
- {
141
- Diagnostics =
142
- {
143
- IsLoggingContentEnabled = true ,
144
- LoggedHeaderNames = { "Authorization" }
145
- }
139
+ authRecord = await Task . Run ( ( ) =>
140
+ {
141
+ var popTokenAuthenticationPolicy = new PopTokenAuthenticationPolicy ( interactiveBrowserCredential as ISupportsProofOfPossession , $ "https://graph.microsoft.com/.default") ;
142
+
143
+ var pipelineOptions = new HttpPipelineOptions ( new PopClientOptions ( )
144
+ {
145
+ Diagnostics =
146
+ {
147
+ IsLoggingContentEnabled = true ,
148
+ LoggedHeaderNames = { "Authorization" }
149
+ } ,
150
+ } ) ;
151
+ pipelineOptions . PerRetryPolicies . Add ( popTokenAuthenticationPolicy ) ;
152
+
153
+ var _pipeline = HttpPipelineBuilder . Build ( pipelineOptions , new HttpPipelineTransportOptions { ServerCertificateCustomValidationCallback = ( _ ) => true } ) ;
154
+ using var request = _pipeline . CreateRequest ( ) ;
155
+ request . Method = RequestMethod . Get ;
156
+ request . Uri . Reset ( new Uri ( "https://20.190.132.47/beta/me" ) ) ;
157
+ var response = _pipeline . SendRequest ( request , cancellationToken ) ;
158
+ var message = new HttpMessage ( request , new ResponseClassifier ( ) ) ;
159
+
160
+ // Manually invoke the authentication policy's process method
161
+ popTokenAuthenticationPolicy . ProcessAsync ( message , ReadOnlyMemory < HttpPipelinePolicy > . Empty ) ;
162
+ // Run the thread in MTA.
163
+ return interactiveBrowserCredential . Authenticate ( new TokenRequestContext ( authContext . Scopes ) , cancellationToken ) ;
146
164
} ) ;
147
- //var response = client.Get(new Uri("https://20.190.132.47/beta/me"), CancellationToken.None);
148
- authRecord = client . GetAuthRecord ( ) ;
149
165
}
150
166
else
151
167
{
@@ -471,4 +487,7 @@ public static Task DeleteAuthRecordAsync()
471
487
return Task . CompletedTask ;
472
488
}
473
489
}
490
+ internal class PopClientOptions : ClientOptions
491
+ {
492
+ }
474
493
}
0 commit comments