WCF证书身份验证,无需在客户端上安装

时间:2009-08-21 09:30:15

标签: wcf-security digital-certificate

我们的设置包括WCF服务和我们编写的许多客户。一些客户端包括Silverlight应用程序,而其他客户端包括Web和Windows应用程序。

我(想)我想根据X.509证书对客户端进行身份验证。通常,您将在客户端上安装私钥以加密(也称为数字签名)消息。服务器可以使用客户端公钥对其进行解密,以确保消息未被更改,并证明消息来自我们期望的人(也称为已认证)。

我不想在客户端计算机上安装证书。它是一个部署的默契,我们真的不能要求我们的客户这样做。前几天我正在和某人说话,他们在一个客户大会上把这个证书包含起来,阅读并使用它。那可能吗?

如果有人能指出我的例子,那就太好了。

提前致谢,

大卫

2 个答案:

答案 0 :(得分:2)

是的,您可以通过传递带有密码的证书字节数组来加载X509certificate2,如

var certificate = new X509Certificate2(theByteArrary, "password");

要获取证书字节数组,您只需复制粘贴.pfx文件中的内容,该文件是.cer(公钥)和.pvk(私钥)的组合

然后您可以通过执行以下操作在您的客户端上加载此证书:

var channelFactory = new ChannelFactory<IYourService>();
channelFactory.Credentials.ClientCertificate.Certificate = 
                                         clientCertificate;

如果您使用自动生成的客户端代理,或者您更喜欢通过.config文件配置证书,那么您可能需要查看this from codeproject

答案 1 :(得分:1)

这是一个建议。也可以调整使用嵌入式证书。

http://www.codeproject.com/KB/WCF/wcfcertificates.aspx