使用WCF将服务器的传输和消息签名证书分离为客户端

时间:2011-09-19 11:32:35

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

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

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

WCF客户端不喜欢此行为。消息失败了:“传入的消息是使用与用于加密身体的令牌不同的令牌签名的。这是不可预期的。”问题详见here

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

看看here

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

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

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

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

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

,这应该足够清楚了