使用netTcpBinding为WCF服务启用基于证书的身份验证

时间:2011-08-25 12:02:34

标签: wcf authentication .net-4.0 x509certificate nettcpbinding

我有其使用与NetTcpBinding的单个端点它位于上露出的WCF服务服务器A 下,托管在IIS7.5 /我们的内部LAN上WAS上我们的域。

此服务随后由位于服务器B 上的ASP.NET Web客户端应用程序使用,该应用程序也在IIS7.5上托管,在我们的域外部具有外部托管提供商,并通过LAN连接到我们的LAN VPN受到保护,仅允许服务器A 服务器B 之间的流量。

在我测试概念的过程中,我使用绑定安全性mode="Transport"和传输clientCredentialType="Windows"在我们域内的另一个IIS服务器上运行了Web客户端应用程序,该工作正常。

我然后移动web客户端应用程序与外部服务器乙作为证明的概念进一步测试设置绑定安全mode="None",作为明显与此服务器是我们的域以外的我不能使用Windows身份验证,它仍然可以正常工作。

我现在需要做的是,要启用切换回使用传输安全性,请设置clientCredentialType="Certificate",因为clientCredentialType="None"无法实现传输安全性。

这是我开始失败的地方。我似乎围绕着服务的web.config和客户端web.config中的哪个地方来定义证书以及存储证书的哪些位。

基本上我想要做的是验证该服务器B 确实服务器B 呼吁服务服务器A ,从而防止任何欺骗或DNS颠覆问题,可能导致非法访问服务器A 的服务。

我的想法是我需要为服务器B 创建一个证书,服务器A持有公钥来验证它?如果是这种情况,服务器B 已经安装了通配符SSL证书,因为它为我们的子域提供了各种应用程序。该证书可以用于WCF身份验证吗?

我发现的所有SO问题似乎都没有涵盖这一点,我发现的所有各种网站和书籍示例都不是那么清楚。它开始看起来像WCF配置有点像黑色艺术。

这都是使用.NET 4和Visual Basic构建的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:6)

MSDN example包含如何在代码和配置中使用证书配置netTcpBinding的示例。只需选择适合您的方案。证书应由VeriSign或Thwate等公共(商业)证书颁发机构颁发,以便外部主机提供商和内部服务器信任该证书。