public static AuthMetadata AcquireMetadata(string authMetadataUrl, bool requireIssuingEndpoint, bool trustSslCert, bool wrapException = true) { AuthMetadataClient authMetadataClient = new AuthMetadataClient(authMetadataUrl, trustSslCert); string content = authMetadataClient.Acquire(wrapException); AuthMetadata authMetadata; switch (AuthMetadataParser.DecideMetadataDocumentType(authMetadataUrl)) { case AuthMetadataParser.MetadataDocType.OAuthS2SV1Metadata: return(AuthMetadataParser.GetAuthMetadata(content, requireIssuingEndpoint)); case AuthMetadataParser.MetadataDocType.WSFedMetadata: return(AuthMetadataParser.GetWSFederationMetadata(content)); case AuthMetadataParser.MetadataDocType.OAuthOpenIdConnectMetadata: authMetadata = AuthMetadataParser.GetOpenIdConnectAuthMetadata(content, requireIssuingEndpoint); if (!string.IsNullOrEmpty(authMetadata.KeysEndpoint)) { authMetadataClient = new AuthMetadataClient(authMetadata.KeysEndpoint, trustSslCert); content = authMetadataClient.Acquire(wrapException); return(AuthMetadataParser.GetOpenIdConnectKeys(content, authMetadata)); } return(authMetadata); } authMetadata = AuthMetadataParser.GetAuthMetadata(content, requireIssuingEndpoint); return(authMetadata); }
public static void SetEndpointsIfWSFed(AuthMetadata authData, AuthServerType authServerType, string authMetadataUrl) { AuthMetadataParser.MetadataDocType metadataDocType = AuthMetadataParser.DecideMetadataDocumentType(authMetadataUrl); if (metadataDocType != AuthMetadataParser.MetadataDocType.WSFedMetadata) { return; } Uri uri = new Uri(authMetadataUrl); authData.AuthorizationEndpoint = string.Format("{0}/{1}/oauth2/authorize", uri.GetLeftPart(UriPartial.Authority), (authServerType == AuthServerType.ADFS) ? "adfs" : "common"); authData.IssuingEndpoint = string.Format("{0}/{1}/oauth2/token", uri.GetLeftPart(UriPartial.Authority), (authServerType == AuthServerType.ADFS) ? "adfs" : "common"); }