Exemplo n.º 1
0
        public static MockHttpMessageHandler AddInstanceDiscoveryMockHandler(
            this MockHttpManager httpManager,
            string authority               = TestConstants.AuthorityCommonTenant,
            Uri customDiscoveryEndpoint    = null,
            string instanceMetadataContent = null)
        {
            Uri authorityURI = new Uri(authority);

            string discoveryEndpoint;

            if (customDiscoveryEndpoint == null)
            {
                string discoveryHost = KnownMetadataProvider.IsKnownEnvironment(authorityURI.Host)
                                           ? authorityURI.Host
                                           : AadAuthority.DefaultTrustedHost;

                discoveryEndpoint = UriBuilderExtensions.GetHttpsUriWithOptionalPort($"https://{discoveryHost}/common/discovery/instance", authorityURI.Port);
            }
            else
            {
                discoveryEndpoint = customDiscoveryEndpoint.AbsoluteUri;
            }

            return(httpManager.AddMockHandler(
                       MockHelpers.CreateInstanceDiscoveryMockHandler(
                           discoveryEndpoint,
                           instanceMetadataContent ?? TestConstants.DiscoveryJsonResponse)));
        }
        public static void AddInstanceDiscoveryMockHandler(this MockHttpManager httpManager, string authority)
        {
            Uri    authorityURI  = new Uri(authority);
            string discoveryHost = KnownMetadataProvider.IsKnownEnvironment(authorityURI.Host)
                                       ? authorityURI.Host
                                       : AadAuthority.DefaultTrustedHost;

            string discoveryEndpoint = UriBuilderExtensions.GetHttpsUriWithOptionalPort($"https://{discoveryHost}/common/discovery/instance", authorityURI.Port);

            httpManager.AddMockHandler(
                MockHelpers.CreateInstanceDiscoveryMockHandler(discoveryEndpoint));
        }
Exemplo n.º 3
0
        public AuthorityInfo(
            AuthorityType authorityType,
            string authority,
            bool validateAuthority)
        {
            AuthorityType     = authorityType;
            ValidateAuthority = validateAuthority;

            var authorityBuilder = new UriBuilder(authority);

            Host = authorityBuilder.Host;

            // TODO: can we simplify this and/or move validation/configuration logic to AbstractApplicationBuilder
            // so that all authority mangling/management is in one place?

            UserRealmUriPrefix = UriBuilderExtensions.GetHttpsUriWithOptionalPort(string.Format(CultureInfo.InvariantCulture, "https://{0}/common/userrealm/", Host), authorityBuilder.Port);

            if (AuthorityType == AuthorityType.B2C)
            {
                var      authorityUri = new Uri(authority);
                string[] pathSegments = authorityUri.AbsolutePath.Substring(1).Split(
                    new[]
                {
                    '/'
                },
                    StringSplitOptions.RemoveEmptyEntries);
                if (pathSegments.Length < 3)
                {
                    throw new ArgumentException(MsalErrorMessage.B2cAuthorityUriInvalidPath);
                }

                CanonicalAuthority = string.Format(
                    CultureInfo.InvariantCulture,
                    "https://{0}/{1}/{2}/{3}/",
                    authorityUri.Authority,
                    pathSegments[0],
                    pathSegments[1],
                    pathSegments[2]);
            }
            else
            {
                CanonicalAuthority = UriBuilderExtensions.GetHttpsUriWithOptionalPort(string.Format(
                                                                                          CultureInfo.InvariantCulture,
                                                                                          "https://{0}/{1}/",
                                                                                          authorityBuilder.Uri.Authority,
                                                                                          GetFirstPathSegment(authority)), authorityBuilder.Port);
            }
        }
Exemplo n.º 4
0
        public void Combine_UriSegments1_UriInstance()
        {
            // Arrange
            const string baseUri = "http://example.com";
            const string path    = "test";

            // Act
            var uri = UriBuilderExtensions.Combine(
                baseUri,
                path,
                "/sub-path-with-slashes/"
                );

            // Assert
            Assert.IsNotNull(uri);
            Assert.AreEqual($"{baseUri}/{path}/sub-path-with-slashes", uri.ToString());
        }
Exemplo n.º 5
0
        public void Combine_UriSegments5_UriInstance()
        {
            // Arrange
            const string baseUri = "http://example.com";
            const string path    = "test";

            // Act
            var uri = UriBuilderExtensions.Combine(
                baseUri,
                path,
                "/sub-path-with-slashes/",
                "filename.ext?",
                "param1=1",
                "&param2=2",
                "#fragment"
                );

            // Assert
            Assert.IsNotNull(uri);
            Assert.AreEqual($"{baseUri}/{path}/sub-path-with-slashes/filename.ext?param1=1&param2=2#fragment", uri.ToString());
        }
Exemplo n.º 6
0
        private Uri ComputeHttpEndpoint(Uri authority, RequestContext requestContext)
        {
            if (_userProvidedInstanceDiscoveryUri != null)
            {
                return(_userProvidedInstanceDiscoveryUri);
            }

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

            string instanceDiscoveryEndpoint = UriBuilderExtensions.GetHttpsUriWithOptionalPort(
                string.Format(
                    CultureInfo.InvariantCulture,
                    "https://{0}/common/discovery/instance",
                    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}");

            return(new Uri(instanceDiscoveryEndpoint));
        }
Exemplo n.º 7
0
 private static string BuildAuthorizeEndpoint(Uri authority)
 {
     return(UriBuilderExtensions.GetHttpsUriWithOptionalPort(authority.Host, GetTenant(authority), "oauth2/v2.0/authorize", authority.Port));
 }
Exemplo n.º 8
0
 private static string BuildInstanceDiscoveryEndpoint(string host, int port)
 {
     return(UriBuilderExtensions.GetHttpsUriWithOptionalPort(string.Format(CultureInfo.InvariantCulture, "https://{0}/common/discovery/instance", host), port));
 }