/// <summary>
        /// </summary>
        /// <param name="uri">The service Uri to load service metadata from.</param>
        /// <param name="httpCredentialsProvider"></param>
        /// <param name="clientCertificatesProvider"></param>
        /// <param name="serverCertificateValidationProvider"></param>
        public MetadataDocumentLoader(string uri, IHttpCredentialsProvider httpCredentialsProvider, IClientCertificateProvider clientCertificatesProvider, IServerCertificateValidationProvider serverCertificateValidationProvider)
        {
            _httpCredentialsProvider             = httpCredentialsProvider;
            _clientCertificatesProvider          = clientCertificatesProvider;
            _serverCertificateValidationProvider = serverCertificateValidationProvider;

            if (string.IsNullOrEmpty(uri))
            {
                throw new ArgumentNullException(nameof(uri));
            }

            if (!CanLoad(uri, string.Empty, Directory.GetCurrentDirectory(), out Uri metadataUri))
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, MetadataResources.ErrInvalidUriFormat, uri));
            }

            if (metadataUri.IsFile)
            {
                // the input could be a reference to a list of files specified with wildcards, let's check.
                var fileInfoList = MetadataFileNameManager.ResolveFiles(metadataUri.LocalPath);

                // when only the wsdl file is specified, we need to resolve any schema references.
                _resolveExternalDocs = fileInfoList.Length == 1;
                this.metadataSourceFiles.AddRange(fileInfoList.Select(fi => new Uri(fi.FullName, UriKind.Absolute)));
            }
            else
            {
                _resolveExternalDocs   = true;
                this.MetadataSourceUrl = metadataUri;
            }
        }
        /// <summary>
        /// </summary>
        /// <param name="metadataFiles">A collection containing the location of wsdl/schema documents to load service metadata from.</param>
        /// <param name="resolveExternalDocuments">if true, WSDL imports and XmlSchema Includes will be attempted to be resolved.</param>
        /// <param name="httpCredentialsProvider"></param>
        /// <param name="clientCertificatesProvider"></param>
        /// <param name="serverCertificateValidationProvider"></param>
        public MetadataDocumentLoader(IEnumerable <string> metadataFiles, bool resolveExternalDocuments, IHttpCredentialsProvider httpCredentialsProvider, IClientCertificateProvider clientCertificatesProvider, IServerCertificateValidationProvider serverCertificateValidationProvider)
        {
            _httpCredentialsProvider             = httpCredentialsProvider;
            _clientCertificatesProvider          = clientCertificatesProvider;
            _serverCertificateValidationProvider = serverCertificateValidationProvider;

            if (metadataFiles == null)
            {
                throw new ArgumentNullException(nameof(metadataFiles));
            }

            foreach (var uri in metadataFiles)
            {
                if (!CanLoad(uri, string.Empty, Directory.GetCurrentDirectory(), out Uri metadataUri))
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, MetadataResources.ErrInvalidUriFormat, uri));
                }

                if (!metadataUri.IsFile)
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, MetadataResources.ErrUrlNotAllowedOnMultipleInputsFormat, metadataUri));
                }

                var fileInfoList = MetadataFileNameManager.ResolveFiles(metadataUri.LocalPath);
                this.metadataSourceFiles.AddRange(fileInfoList.Select(fi => new Uri(fi.FullName, UriKind.Absolute)));
            }

            _resolveExternalDocs = resolveExternalDocuments;
        }
Example #3
0
 public ServiceDescriptorFactory(
     IHttpCredentialsProvider userCredentialsProvider,
     IClientCertificateProvider clientCertificateProvider,
     IServerCertificateValidationProvider serverCertificateValidationProvider)
 {
     _userCredentialsProvider             = userCredentialsProvider;
     _clientCertificateProvider           = clientCertificateProvider;
     _serverCertificateValidationProvider = serverCertificateValidationProvider;
 }
Example #4
0
 /// <summary>
 /// 添加一个消息处理器,通过此消息处理器会在请求过程中,自动从认证服务获取令牌并添加到请求头中
 /// 该处理器通过<seealso cref="IClientCertificateProvider"/>获取对应客户端的认证令牌
 /// </summary>
 /// <param name="builder">HttpClient构建器</param>
 /// <param name="clientId">认证客户端Id</param>
 /// <returns></returns>
 public static IHttpClientBuilder AddTokenMessageHandler(this IHttpClientBuilder builder, string clientId)
 {
     builder.AddHttpMessageHandler((sp) =>
     {
         IClientCertificateProvider provider = sp.GetRequiredService <IClientCertificateProvider>();
         ClientCertificateManager cm         = provider.GetClientCertificateManager(clientId);
         return(new GetClientTokenMessageHandler(cm));
     });
     return(builder);
 }
Example #5
0
        internal ServiceDescriptor(
            List <string> metadataFiles,
            IHttpCredentialsProvider userCredentialsProvider,
            IClientCertificateProvider clientCertificateProvider,
            IServerCertificateValidationProvider serverCertificateValidationProvider)
        {
            if (metadataFiles == null)
            {
                throw new ArgumentException(nameof(metadataFiles));
            }

            this.metadataDocumentLoader = new MetadataDocumentLoader(metadataFiles, false, userCredentialsProvider, clientCertificateProvider, serverCertificateValidationProvider);
        }
Example #6
0
        internal ServiceDescriptor(
            string serviceUri,
            IHttpCredentialsProvider userCredentialsProvider,
            IClientCertificateProvider clientCertificateProvider,
            IServerCertificateValidationProvider serverCertificateValidationProvider)
        {
            if (string.IsNullOrWhiteSpace(serviceUri))
            {
                throw new ArgumentException(nameof(serviceUri));
            }

            this.metadataDocumentLoader = new MetadataDocumentLoader(serviceUri, userCredentialsProvider, clientCertificateProvider, serverCertificateValidationProvider);
        }
Example #7
0
        public static MetadataExchangeResolver Create(
            EndpointAddress endpointAddress,
            IHttpCredentialsProvider userCredentialsProvider,
            IClientCertificateProvider clientCertificatesProvider,
            IServerCertificateValidationProvider serverCertificateValidationProvider)
        {
            if (endpointAddress == null)
            {
                throw new ArgumentNullException(nameof(endpointAddress));
            }

            MetadataExchangeResolver resolver = CreateMetadataExchangeClient(endpointAddress);

            resolver.EndpointAddress                     = endpointAddress;
            resolver.HttpCredentialsProvider             = userCredentialsProvider;
            resolver.ClientCertificatesProvider          = clientCertificatesProvider;
            resolver.ServerCertificateValidationProvider = serverCertificateValidationProvider;
            resolver.OperationTimeout                    = TimeSpan.MaxValue;
            resolver.ResolveMetadataReferences           = true;
            resolver.MaximumResolvedReferences           = MaximumResolvedReferencesDefault;
            resolver.HttpCredentials                     = System.Net.CredentialCache.DefaultCredentials;

            return(resolver);
        }
Example #8
0
 protected virtual MetadataDocumentLoader CreateMetadataDocumentLoader(IEnumerable <string> metadataFiles, bool resolveExternalDocuments, IHttpCredentialsProvider httpCredentialsProvider, IClientCertificateProvider clientCertificatesProvider, IServerCertificateValidationProvider serverCertificateValidationProvider)
 {
     return(new MetadataDocumentLoader(metadataFiles, resolveExternalDocuments, httpCredentialsProvider, clientCertificatesProvider, serverCertificateValidationProvider));
 }
Example #9
0
 protected virtual MetadataDocumentLoader CreateMetadataDocumentLoader(string uri, IHttpCredentialsProvider httpCredentialsProvider, IClientCertificateProvider clientCertificatesProvider, IServerCertificateValidationProvider serverCertificateValidationProvider)
 {
     return(new MetadataDocumentLoader(uri, httpCredentialsProvider, clientCertificatesProvider, serverCertificateValidationProvider));
 }
Example #10
0
 protected HttpClientBase(IWorkerConfiguration workerConfig)
 {
     this.WorkerConfig = workerConfig;
     this.ClientCertificateProvider = new X509StoreCertificateProvider(X509FindType.FindBySubjectName, workerConfig.ClientCertificate, false, StoreName.My, StoreLocation.LocalMachine);
 }
 public SmartCacheHttpClientBuilder(IClientCertificateProvider clientCertificateProvider, IHttpClientFactory httpClientFactory)
 {
     this.clientCertificateProvider = clientCertificateProvider;
     this.httpClientFactory         = httpClientFactory;
 }
 public AccessTokenManager(string appId, IClientCertificateProvider tokenProvider)
 {
     _appId         = appId;
     _tokenProvider = tokenProvider;
 }