c# - 我应该使用 basicHttpBinding 还是 WsHttpBinding 来创建安全的 Java 客户端?

标签 c# java wcf basichttpbinding wshttpbinding

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

我希望通过网络对内容进行加密。我尝试过使用 basicHttpBinding 配置:

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

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

我不明白的是,当我使用 WsHttpBinding 和使用 Transport/Windows 安全性时,我从未遇到过证书问题,这是为什么?

在别人有想法之后,对我来说实现我的想法最简单的方法是什么?

最佳答案

WCF 和 Java 的兼容性有点复杂。

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

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

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

现在您只需配置 Java 端或调整 WCF 配置即可启用 SOAP12,而不是 SOAP11。让我知道它是否有效。

关于c# - 我应该使用 basicHttpBinding 还是 WsHttpBinding 来创建安全的 Java 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19188726/

相关文章:

c# - 多设备架构

wcf - [Silverlight] WCF 客户端的编程配置

c# - 当参数为 MultipartFormDataStreamProvider 时无法模拟接口(interface)方法

java - input.read() 函数。锁定 while 循环

java - 在 Intellij Idea 13 中从源代码制作 jar 库

.net - 将 DataMember 添加到 WCF 中的现有 DataContract

javascript - 跨语言字符串转义

c# - 将 C printf(%c) 转换为 C#

c# - 如何获取与关键字匹配的数组的索引值?

java - rxjava : emitting one result of all observables instead of multiple