使用邮件安全性的WCF路由

时间:2012-02-08 16:59:36

标签: wcf wcf-security wcf-routing

我的邮件安全身份验证的WCF服务。

我想为负载均衡设置路由服务。

由于某种原因,它不起作用,我已启用includeExceptionDetailInFaults来查看异常,因此在客户端中我看到:

  

未提供客户端证书。指定客户端证书   在ClientCredentials中。

似乎证书不是从router-> service转发的。

目前客户端/路由器/服务在同一台机器上,所以我拥有所有证书,但是如果我将它们部署在不同的机器上,那么路由器是否必须拥有私钥?

此外,如果我想在路由器和服务之间建立非安全连接(卸载安全性),我该如何提供呼叫者的身份?

编辑: 对于所有客户端/路由器(服务器和客户端)/服务器,安全性配置相同:

            <security mode="Message">
                <message clientCredentialType="Certificate" negotiateServiceCredential="false"
                    algorithmSuite="Default" establishSecurityContext="false" />
            </security>

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

  

未提供客户端证书。在ClientCredentials中指定客户端证书。

当服务证书与主机域名不匹配时,我看到了这个错误。

如果您仍然看到此问题,可以发布一些配置条目吗?

答案 2 :(得分:0)

1)首先尝试通过代码在客户端设置证书。

ChannelFactory<IService1> factory = 
             new ChannelFactory<IService1>("Service1_Endpoint");
factory.Credentials.ServiceCertificate.SetDefaultCertificate(
             System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser,
             System.Security.Cryptography.X509Certificates.StoreName.My,
             System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName,
             "<SeriveCerificateName>");

如果您确实遇到证书问题,请立即在应用程序启动时获取异常。

2)如果没有例外,则检查双方服务证书的指纹。

答案 3 :(得分:0)