コード例 #1
0
        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);
        }
コード例 #2
0
        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");
        }