wcf - 带有 WCF 客户端的 Java JAX-WS 服务

标签 wcf web-services jax-ws ws-security

是否可以使用 JAX-WS 创建 WebService,然后使用这种绑定(bind)由 WCF 客户端使用?

<bindings>
        <basicHttpBinding>
            <binding name="CaseObjectServicePortBinding" >
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>
            </binding>

        </basicHttpBinding>
    </bindings>

我现在在没有 WSIT 的情况下创建了这样的服务,只是一个普通的服务,并且只想忽略传入 SOAP 消息中的“Security” header 。但它失败了:

“无法为具有权限‘xxxxxxxxxx’的 SSL/TLS 建立安全 channel 。”

如果我改变:
<security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>

到:
<security mode="Transport">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>

一切都完美无缺。任何想法我做错了什么?

最佳答案

答案是肯定的。您可以使用 BasicHttpBinding 或 WsHttpBinding

发生错误是因为当您使用 TransportWithMessageCredential ,WCF 客户端将对您通过线路发送的消息施加额外的安全性,该线路仅可与 WCF 服务互操作。

一旦您将其更改为 交通 ,只应用了传输安全(使用证书的SSL),这样为什么客户端和服务都可以理解如何相互通信。

干杯。

关于wcf - 带有 WCF 客户端的 Java JAX-WS 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4111013/

相关文章:

web-services - Node.js 方法远程调用

java - Apache CXF 和 Spring AOP

java - 如何在 JAX-WS Java Web 服务中使用 Log4j2

java - 如何在 Apache CXF JAX-WS 中阻止 HTTP 请求

java - 编码/解码 Java 方法

c# - 为什么我不能重用 WebClient 两次发出相同的请求?

wcf - 无法将 "%26"传递给 WCF 服务中的 WebGet UriTemplate 变量?

c# - 为 RESTful WCF 配置 SSL 绑定(bind)。如何?

java - Lighttpd 运行在 Android 服务上

ajax - POST 请求后 jQuery AJAX 和 WCF 异常失败