public static bool ContinueAuthentication(string url, Core.ICoreLogger logger) { if (s_returnedUriReady == null) { bool containsBrokerSubString = url.Contains(iOSBrokerConstants.IdentifyiOSBrokerFromResponseUrl); logger?.Warning( "Not expecting navigation to come back to WebviewBase. " + "This can indicate a badly setup OpenUrl hook " + "where SetBrokerContinuationEventArgs is not called."); logger?.WarningPii( $"Url: {url} is broker url? {containsBrokerSubString}", $"Is broker url? {containsBrokerSubString}"); return(false); } s_authorizationResult = AuthorizationResult.FromUri(url); logger?.Verbose("Response url parsed and the result is " + s_authorizationResult.Status); s_returnedUriReady.Release(); return(true); }
public TcpInterceptor(Core.ICoreLogger logger) { _logger = logger; }
private async Task <MsalTokenResponse> SendHttpAndClearTelemetryAsync(string tokenEndpoint, Core.ICoreLogger logger) { UriBuilder builder = new UriBuilder(tokenEndpoint); builder.AppendQueryParameters(_requestParams.ExtraQueryParameters); Uri tokenEndpointWithQueryParams = builder.Uri; try { logger.Verbose("[Token Client] Fetching MsalTokenResponse .... "); MsalTokenResponse msalTokenResponse = await _oAuth2Client .GetTokenAsync(tokenEndpointWithQueryParams, _requestParams.RequestContext, true, _requestParams.OnBeforeTokenRequestHandler) .ConfigureAwait(false); // Clear failed telemetry data as we've just sent it _serviceBundle.HttpTelemetryManager.ResetPreviousUnsentData(); return(msalTokenResponse); } catch (MsalServiceException ex) { if (!ex.IsAadUnavailable()) { // Clear failed telemetry data as we've just sent it ... // even if we received an error from the server, // telemetry would have been recorded _serviceBundle.HttpTelemetryManager.ResetPreviousUnsentData(); } if (ex.StatusCode == (int)HttpStatusCode.Unauthorized) { string responseHeader = string.Empty; var isChallenge = _serviceBundle.DeviceAuthManager.TryCreateDeviceAuthChallengeResponse( ex.Headers, new Uri(tokenEndpoint), // do not add query params to PKeyAuth https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/2359 out responseHeader); if (isChallenge) { //Injecting PKeyAuth response here and replaying request to attempt device auth _oAuth2Client.AddHeader("Authorization", responseHeader); return(await _oAuth2Client.GetTokenAsync( tokenEndpointWithQueryParams, _requestParams.RequestContext, false, _requestParams.OnBeforeTokenRequestHandler).ConfigureAwait(false)); } } throw; } finally { _requestInProgress = false; } }