我一直在尝试为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。
发布于 2012-04-30 08:01:49
我设法解决了这个问题,方法是从wsdl中删除TransportBinding元素,让Java而不是Metro处理传输安全性。
https://stackoverflow.com/questions/10251282
复制相似问题