1

我一直在尝试为 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。

4

1 回答 1

2

我设法通过从 wsdl 中删除 TransportBinding 元素并让 Java 处理传输安全而不是 Metro 来解决这个问题。

于 2012-04-30T00:01:48.697 回答