public static SharePointAuthorizationDiscoveryMetadata Create(
            string wwwAuthenticateParams)
        {
            var paramsDict = HttpWwwAuthenticateHeaderParameterParser
                             .Parse(wwwAuthenticateParams);

            var targetInstance = new SharePointAuthorizationDiscoveryMetadata(
                paramsDict)
            {
                Domain            = PopValue(paramsDict, DomainKey),
                Realm             = PopValue(paramsDict, RealmKey),
                ResourcePrincipal = PopValue(paramsDict, ResourcePrincipalKey),
                AuthorizationUri  = PopValue(paramsDict, AuthorizationUriKey)
            };

            if (PopValue(paramsDict, TrustedIssuersKey) is string trustedIssuers)
            {
                targetInstance.TrustedIssuers.AddRange(trustedIssuers.Split(
                                                           commaSeparator, StringSplitOptions.RemoveEmptyEntries));
            }
            return(targetInstance);
Example #2
0
        public static Dictionary <string, string> Parse(string param)
        {
            var state  = new HttpWwwAuthenticateHeaderParameterParser(param);
            var result = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);
            var token  = state.ReadToken();

            while (!string.IsNullOrEmpty(token))
            {
                if (!state.ReadDelim('='))
                {
                    return(result);
                }
                result[token] = state.ReadString();
                if (!state.ReadDelim(','))
                {
                    return(result);
                }
                token = state.ReadToken();
            }
            return(result);
        }