Example #1
0
        private async Task <InstanceDiscoveryResponse> SendInstanceDiscoveryRequestAsync(
            Uri authority,
            RequestContext requestContext)
        {
            var client = new OAuth2Client(requestContext.Logger, _httpManager, _telemetryManager);

            client.AddQueryParameter("api-version", "1.1");
            client.AddQueryParameter("authorization_endpoint", BuildAuthorizeEndpoint(authority));

            Uri instanceDiscoveryEndpoint = ComputeHttpEndpoint(authority, requestContext);

            InstanceDiscoveryResponse discoveryResponse = await client
                                                          .DiscoverAadInstanceAsync(instanceDiscoveryEndpoint, requestContext)
                                                          .ConfigureAwait(false);

            return(discoveryResponse);
        }
Example #2
0
        private async Task <InstanceDiscoveryResponse> SendInstanceDiscoveryRequestAsync(
            Uri authority,
            RequestContext requestContext)
        {
            var client = new OAuth2Client(_logger, _httpManager, _telemetryManager);

            client.AddQueryParameter("api-version", "1.1");
            client.AddQueryParameter("authorization_endpoint", BuildAuthorizeEndpoint(authority.Host, GetTenant(authority)));

            string discoveryHost = AadAuthority.IsInTrustedHostList(authority.Host)
                                       ? authority.Host
                                       : AadAuthority.DefaultTrustedHost;

            string instanceDiscoveryEndpoint = BuildInstanceDiscoveryEndpoint(discoveryHost);

            var discoveryResponse = await client.DiscoverAadInstanceAsync(new Uri(instanceDiscoveryEndpoint), requestContext)
                                    .ConfigureAwait(false);

            return(discoveryResponse);
        }
Example #3
0
        private async Task <InstanceDiscoveryResponse> SendInstanceDiscoveryRequestAsync(
            Uri authority,
            RequestContext requestContext)
        {
            var client = new OAuth2Client(requestContext.Logger, _httpManager, _telemetryManager);

            client.AddQueryParameter("api-version", "1.1");
            client.AddQueryParameter("authorization_endpoint", BuildAuthorizeEndpoint(authority));

            string discoveryHost = KnownMetadataProvider.IsKnownEnvironment(authority.Host) ?
                                   authority.Host :
                                   AadAuthority.DefaultTrustedHost;
            string instanceDiscoveryEndpoint = BuildInstanceDiscoveryEndpoint(discoveryHost, authority.Port);

            requestContext.Logger.InfoPii(
                $"Fetching instance discovery from the network from host {discoveryHost}. Endpoint {instanceDiscoveryEndpoint}",
                $"Fetching instance discovery from the network from host {discoveryHost}");

            InstanceDiscoveryResponse discoveryResponse = await client
                                                          .DiscoverAadInstanceAsync(new Uri(instanceDiscoveryEndpoint), requestContext)
                                                          .ConfigureAwait(false);

            return(discoveryResponse);
        }
Example #4
0
        protected override async Task <string> GetOpenIdConfigurationEndpointAsync(string userPrincipalName,
                                                                                   RequestContext requestContext)
        {
            if (ValidateAuthority && !IsInTrustedHostList(new Uri(CanonicalAuthority).Host))
            {
                OAuth2Client client = new OAuth2Client();
                client.AddQueryParameter("api-version", "1.0");
                client.AddQueryParameter("authorization_endpoint", CanonicalAuthority + "oauth2/v2.0/authorize");

                InstanceDiscoveryResponse discoveryResponse =
                    await
                    client.DiscoverAadInstanceAsync(new Uri(AadInstanceDiscoveryEndpoint), requestContext)
                    .ConfigureAwait(false);

                if (discoveryResponse.TenantDiscoveryEndpoint == null)
                {
                    throw new MsalServiceException(discoveryResponse.Error, discoveryResponse.ErrorDescription);
                }

                return(discoveryResponse.TenantDiscoveryEndpoint);
            }

            return(GetDefaultOpenIdConfigurationEndpoint());
        }