public ClientCertificateManager GetClientCertificateManager(string clientId)
        {
            _logger.LogDebug($"获取客户端管理器:{clientId??""}");
            var cm = _cache.GetOrAdd(clientId, (id) =>
            {
                var client = _options.ClientList.FirstOrDefault(c => c.ClientID == id);
                if (client == null)
                {
                    return(null);
                }
                if (String.IsNullOrEmpty(client.AuthUrl))
                {
                    client.AuthUrl = _options.DefaultUrl;
                }

                TokenCacheManager cacheManager = null;
                if (client.TokenCacheManager != null)
                {
                    cacheManager = client.TokenCacheManager(_serviceProvider, clientId);
                }
                else
                {
                    cacheManager = TokenCacheManager.MemoryCacheFactory(_serviceProvider, clientId);
                }

                return(new ClientCertificateManager(
                           client,
                           client.Processor ?? CertificateProcessor.OIDC,
                           client.TokenSetter ?? SetTokenProcessor.Bearer,
                           client.ResponseChecker ?? CheckResponseProcessor.NormalChecker,
                           cacheManager,
                           _loggerFactory.CreateLogger <ClientCertificateManager>(),
                           _httpFactory));
            });

            if (cm == null)
            {
                _logger.LogError($"客户端未配置:{clientId}");
                throw new InvalidOperationException($"客户端未配置:{clientId}");
            }
            else
            {
                _logGetClient(_logger, clientId, cm.Client?.ClientName, cm.Client?.AuthUrl, null);
            }
            return(cm);
        }
 public ClientCertificateManager(
     ClientCertificateInfo client,
     CertificateProcessor processor,
     SetTokenProcessor tokenSetter,
     CheckResponseProcessor responseChecker,
     TokenCacheManager cacheManager,
     ILogger <ClientCertificateManager> logger,
     IHttpClientFactory clientFactory)
 {
     Client           = client;
     _processor       = processor;
     _tokenSetter     = tokenSetter;
     _responseChecker = responseChecker;
     _cacheManager    = cacheManager;
     _clientFactory   = clientFactory;
     _logger          = logger;
 }