WCF:使用证书和用户名身份验证来使用Web服务

时间:2012-10-31 15:18:42

标签: .net wcf web-services soap certificate

我一直在努力尝试使用服务器中托管的网络服务,我无法控制(因此我无法在服务器部分进行任何配置)

我一直在使用WCF尝试使用同时具有用户名/密码和证书身份验证要求(以及HTTPS连接)的Web服务。

我的代码是:

        EndpointAddress ea = new
                EndpointAddress("https://the.server.address");

        BasicHttpBinding bs = new BasicHttpBinding();

        bs.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
        bs.Security.Transport.ClientCredentialType =
            HttpClientCredentialType.Certificate;

        //here if I put username I get a 'message is not signed' error. 
           If I put credentials I get an 'invalid username/password'.
        bs.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;

        var svc = new myWebServiceClient(bs, ea);

        var request = new ObjectWS();

        svc.ClientCredentials.ClientCertificate.SetCertificate(
                                        StoreLocation.CurrentUser,
                                                 StoreName.Root,
                                X509FindType.FindBySerialNumber,
                                "the serial");

        svc.ClientCredentials.UserName.UserName = "user";
        svc.ClientCredentials.UserName.Password = "pass";

        //the call to the method in the WS
        request= svc.getValue("param");

问题在于,由于我是WCF中的新手(以及一般的WebServices),我实际上并不知道如何使用用户名和证书身份验证来使用Web服务,我也不知道是否没有任何意义。

在行中:

bs.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;

如果我将凭证类型设置为证书,则会收到无效的用户名/密码。另一方面,如果我将其设置为用户名,我将收到“消息未签名错误”。

我非常感谢这个问题的一些反馈/帮助。此致!

0 个答案:

没有答案