我应该使用basicHttpBinding或WsHttpBinding来创建安全的Java客户端吗?

时间:2013-10-04 18:53:49

标签: c# java wcf basichttpbinding wshttpbinding

我今天花了好几个小时试图让一个非常简单的WCF服务和一个Java客户端相互通信。我只是成功地让服务和客户端使用basicHttpBinding进行通信而没有启用安全性。

我想通过网络加密内容。我尝试过使用basicHttpBinding配置:

  <basicHttpBinding>
    <binding name="bindingConfig">
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </basicHttpBinding>

现在这几乎导致了大量问题,因为当我的服务托管在IIS上时,我尝试在本地测试WCF服务时遇到证书错误(VS2012使用WCF测试客户端),使用任何浏览器浏览到WSDL,以及何时使用用于生成客户端的Svcutil / wsimport实用程序。

我不明白的是,当我使用WsHttpBinding并使用传输/ Windows安全时,我从未遇到证书问题,为什么会这样?

对我来说,最简单的方法是在有人想到之后实现我的目标?

1 个答案:

答案 0 :(得分:1)

WCF和Java兼容性有点复杂。

首先,您在Java中使用哪个框架?

其次,在WCF方面,您应该更好地使用自定义绑定而不是wsHttpBinding。 您可以使用此tool轻松转换绑定。通过绑定,它将给出:

<customBinding>
  <binding name="NewBinding0">
    <textMessageEncoding MessageVersion="Soap11" />
    <httpsTransport authenticationScheme="Negotiate" />
  </binding>
</customBinding>

现在您只需配置Java端或调整WCF配置,即可启用SOAP12而不是SOAP11。如果有效,请告诉我。