我必须为一个可能用Java编写的外部SOAP Web服务创建一个WCF客户端。该Web服务使用 WS-Security 进行签名和加密(因此,我想我必须使用WCF消息级安全性)。客户端和Web服务之间的传输机制是 HTTPS,双向握手。
问题是我必须使用四种不同的证书 - 我们称之为 CertA , CertB , CertC 和 CertD
基本上,客户端应该使用它的私钥对消息进行签名,并使用服务器的公钥对消息进行加密。服务器正好相反。
准确地说,这是WCF客户端为了向服务器发送消息并接收响应而必须做的事情:
客户端使用证书 CertA 签署SOAP请求(使用CertA的 私钥)
客户端使用证书 CertD 加密SOAP请求 (使用CertD的公钥)
客户端通过HTTPS将签名和加密的SOAP消息发送到服务器(在HTTPS双向握手期间服务器需要证书 CertB 以进行身份验证)
在服务器端:
当客户端收到服务器响应时:
问题是如何配置此类WCF客户端?使用哪种绑定来启用SOAP签名&消息层加密+ HTTPS传输层上的双向握手以及如何“告诉”WCF 4个证书的目的是什么?
(是的,我已经看过这篇文章了:https://msdn.microsoft.com/en-us/library/ms729856(v=vs.110).aspx但是我担心这篇文章没有为我的案例提供解决方案,因为他们使用了一些奇怪的双工绑定,需要客户端打开一个监听端口,那就是因为我必须使用常规的HTTPS连接,所以不是我的选择。