使用提供的wsdl从WCF使用安全的Web服务

时间:2013-11-28 11:42:04

标签: wcf web-services wsdl wcf-security soap-client

我从公司合作伙伴那里获得了一个wsdl和xsd文件来访问他们的https服务。 我已经安装了客户端证书,并且可以在soapUI中配置安全性后使用SoapUI访问其API。

在.net应用程序中使用API​​的后续步骤是什么?

我使用svcutil生成了代理。 我已将证书添加到本地计算机和当前用户 - 受信任的根证书颁发机构 证书来自服务提供商,并通过soapUI工作。它不是自签名的。

当我调用服务时,我无法使用权​​限'WEB_SERVICE_URL:11851'为SSL / TLS建立安全通道。

我是否需要在配置文件中配置https或我缺少什么?

谢谢

1 个答案:

答案 0 :(得分:0)

原来我必须在代码中指定证书

       // Create the binding.

        BasicHttpBinding customerBinding = new BasicHttpBinding();
        customerBinding.Security.Mode = BasicHttpSecurityMode.Transport;
        customerBinding.Security.Transport.ClientCredentialType =
           HttpClientCredentialType.Certificate;

        // Create the endpoint address. Note that the machine name 
        // must match the subject or DNS field of the X.509 certificate
        // used to authenticate the service. 
        EndpointAddress customerEa = new               
          EndpointAddress("https:URL_OF_SERVICE:11851/WebServices/GetCustomerDetailsService");

        // Create the client.             
        customerClient = new GetCustomerDetails1Client(customerBinding, customerEa);

        // The client must specify a certificate trusted by the server.
           customerClient.ClientCredentials.ClientCertificate.SetCertificate(
            StoreLocation.CurrentUser,
            StoreName.My,
            X509FindType.FindBySubjectName,
            "CERTIFICATE_NAME");