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)); }
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); } }
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)); }
private static string BuildAuthorizeEndpoint(Uri authority) { return(UriBuilderExtensions.GetHttpsUriWithOptionalPort(authority.Host, GetTenant(authority), "oauth2/v2.0/authorize", authority.Port)); }
private static string BuildInstanceDiscoveryEndpoint(string host, int port) { return(UriBuilderExtensions.GetHttpsUriWithOptionalPort(string.Format(CultureInfo.InvariantCulture, "https://{0}/common/discovery/instance", host), port)); }