我一直在尝试为 WCF 服务创建一个基于 Metro 的客户端,同时使用传输和消息安全性以及相互证书身份验证。
我让每种模式单独工作,而不是一起工作 - 即只有消息安全工作,正文被加密并通过 HTTP 发送,或者只有 SSL 工作,消息没有加密。激活它们会使客户端通过 SSL 发送未加密的消息。
这是我当前的绑定:
<customBinding>
<binding name="customBind">
<transactionFlow />
<security authenticationMode="MutualCertificate" allowSerializedSigningTokenOnReply="true" defaultAlgorithmSuite="Basic128" includeTimestamp="true" securityHeaderLayout="Lax">
</security>
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport requireClientCertificate="false"/>
<!--<httpTransport />-->
</binding>
</customBinding>
使用 httpTransport,消息被加密,使用 httpsTransport,它们不是。服务器响应“验证消息的安全性时发生错误。”,因为消息未加密。Metro 客户端失败并显示“com.sun.xml.wss.XWSSecurityException:未满足安全要求 - 消息中没有安全标头”。
有没有人遇到过这个?关于为什么会发生这种情况的任何线索,或者我可以探索的可能的事情?附加信息:使用 Netbeans 7.1.1 和 Metro 2.2。