【问题标题】:WCF Routing with Message Security具有消息安全性的 WCF 路由
【发布时间】:2012-03-01 03:51:27
【问题描述】:

我有一个带有消息安全身份验证的 WCF 服务。

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

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

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

证书似乎不是从路由器->服务转发的。

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

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

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

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

【问题讨论】:

  • 你能显示这3个配置文件吗?

标签: wcf wcf-security wcf-routing


【解决方案1】:

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 证书与主机名不匹配。我现在使用'localhost'或IP。但它仍然应该工作..这是一个已知的错误吗?
    • 您可以尝试WinHttpCertCfg.exe 以查看证书是否设置正确并具有使用密钥所需的权限。
    • 我认为这不会有帮助,我以管理员身份运行应用程序,所以我应该有足够的权限。
    【解决方案3】:

    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) 如果没有异常,则检查双方服务证书的指纹。

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 这个答案来自 5 年前。我希望微软能修复他们的博客。
      猜你喜欢
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      相关资源
      最近更新 更多