还有另一个MessageSecurityException问题

本文关键字:问题 MessageSecurityException 另一个 | 更新日期: 2023-09-27 18:28:53

所以我构建了一个使用基本Auth Soap 1.2的服务。下面的配置:

<customBinding>
    <binding name="MyHttpBinding">
      <security authenticationMode="UserNameOverTransport" securityHeaderLayout="Strict"
        allowInsecureTransport="false">
        <secureConversationBootstrap />
      </security>
      <textMessageEncoding messageVersion="Soap12" />
      <httpsTransport maxReceivedMessageSize="6553600" authenticationScheme="Basic" maxBufferSize="6553600" />
    </binding>
  </customBinding>

我有多个客户端在调用它(WCF和Java)。使用WCF客户端,我没有任何问题,但使用Java客户端,我在服务器端得到以下异常:

System.ServiceModel.Security.MessageSecurityException Security处理器在消息中找不到安全标头。这可能是因为该消息是不安全的错误,或者因为存在通信方之间的绑定不匹配。这种情况可能发生如果为安全性配置了服务,并且客户端未使用安全

我不知道如何绕过这个问题。系统需要使用基本身份验证,并且必须使用Soap 1.2(因此是自定义绑定)。我不能控制调用Java客户端,但我确信它是使用基本的Auth调用服务的。

有什么建议吗?

还有另一个MessageSecurityException问题

我不是Java专家,但据我所知,Java客户端无法动态实现SOAP 1.2。Java客户端需要外部库来补充1.2 SOAP消息中必要的策略/安全头。

我已经指示我的Java客户端使用Metro库来使用我的WCF服务。(我使用的是和你类似的绑定。)下面是一个如何包含Metro库的博客。

这是MSDN的互操作性链接。

希望这能有所帮助!

您需要配置java客户端以向服务器发送用户名令牌。打开Fiddler并将工作的soap(wcf客户端)与不工作的soap进行比较(java)