【问题标题】:Separating as a client the server's transport and message signature certificates with WCF使用 WCF 将服务器的传输和消息签名证书作为客户端分离
【发布时间】:2011-11-20 04:18:28
【问题描述】:

我目前正在将 WCF 客户端集成到 Java Web 服务中。服务器要求客户端通过使用 SSL 的证书和要签名的消息进行身份验证。

我已通过 SSL、Signed 等方式成功地将消息发送到服务器。但是,服务器响应消息也经过签名,但使用的证书与用于验证服务器的证书不同。

WCF 客户端不喜欢这种行为。它失败并显示以下消息:“传入消息的签名与用于加密正文的令牌不同。这是意料之外的。”问题在here详细描述。

在 Google 上环顾四周,我发现可以通过实现 ClientCredentials 和其他与安全相关的类并添加新的扩展来将客户端传输证书与歌唱证书分离。您可以阅读有关它的所有详细信息here。但是,我在弄清楚我必须在哪里扩展才能在客户端模式下为服务器的证书提供相同的行为时遇到了一些麻烦。

对主题或参考的任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: wcf wcf-binding wcf-security wcf-client


    【解决方案1】:

    看看here

    这将向您展示如何创建自定义 ServiceCredentialsSecurityTokenManager,它允许您为发往和来自服务器的请求和响应指定各种消息签名和加密证书。

    我强调消息,因为您描述的问题在我看来是消息安全验证。传输安全性与用于验证消息安全性的机制分离,即消息签名和消息解密。

    忽略传输安全性,因为它在 WCF 管道中较低,并且根据您的描述似乎工作正常。一个单独的问题是消息安全。看来您需要能够使用证书来解密响应并使用证书来验证签名。上面的文章显示了一个启用这种类型的证书管理的示例,它确实详细说明了如何创建行为和扩展以将其应用于您的客户端,这是一个单独的问题。这取决于您希望如何配置代理,即通过代码或通过配置。

    您链接的示例article 也不是您所需的完整实现,它仅提供用于签名的证书和用于传输客户端凭据的证书。

    您可以创建一个混合的 ServiceCredentialsSecurityTokenManager 来提供传输证书以及签名和解密,这应该通过查看SecurityTokenRequirement 文档很清楚

    【讨论】:

      猜你喜欢
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 2013-01-22
      • 2011-06-11
      • 1970-01-01
      • 2012-08-19
      相关资源
      最近更新 更多