java - 使用 Metro 连接到 WCF 服务的问题 - HTTP 有效,HTTPS 无效

标签 java wcf ssl java-metro-framework

我正在使用正在构建的 Java 客户端连接到 WCF Web 服务。其他人已经成功构建了 WCF 客户端以连接到此服务。可通过 HTTP 获得的 WSDL 提供了消息级安全性。通过 HTTPS 可用的 WSDL 使用 TLS 和消息级安全。我知道在消息级安全性之上使用 TLS 基本上是双重加密,但这是一个关键要求。

由于我可以正确连接到 HTTP 服务,我相信我已经解决了所有信任存储和 key 存储问题。

我正在使用 Metro 2.1.1 连接到该服务。我已经在 Eclipse 和 Netbeans 中构建了客户端。我从 HTTP 站点获取 WSDL,并使用 wsimport(带有 -extensions 标志)成功构建和执行客户端。

当我使用 HTTPS 站点获取 WSDL 时,我可以再次成功构建两个客户端。但是当我执行它们时 - 我收到以下错误:

    Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: An error occurred when verifying security for the message.
at com.sun.xml.ws.fault.SOAP12Fault.getProtocolException(SOAP12Fault.java:225)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:122)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:140)
at $Proxy43.request(Unknown Source)

两个 WSDL(一个通过 HTTP 获取,另一个通过 HTTPS 获取)之间的唯一区别是 WSDL 中对 HTTPS://与 HTTP://的引用。

我无法轻松访问 WCF 服务日志 - 通常在我请求一组日志和可以查看它们之间有 3-6 小时的延迟。

我的问题是有没有人遇到过类似的情况 - 我在这里公然遗漏了什么吗?我可以查找 NetMon 或 Wireshark 跟踪中的内容以查看问题出在哪里?几天来我一直在为此苦苦挣扎 - 任何帮助将不胜感激。

最佳答案

如果您有权访问服务配置,请尝试在您使用的端点上禁用安全上下文:

<message establishSecurityContext="False" clientCredentialType="UserName"/>

您可以阅读有关安全上下文 token (SCT) 的更多信息:

关于java - 使用 Metro 连接到 WCF 服务的问题 - HTTP 有效,HTTPS 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352062/

相关文章:

java - 哪个 Selenium 版本支持 OperaDriver 版本?

c# - 使用 PrincipalContext.ValidateCredentials 对本地计算机进行身份验证时出错?

java - 如何解决javax.net.ssl.SSLHandshakeException : Connection closed by peer

java - 使用 SSL 证书的 Java 连接 HTTPS 错误

通过 SSL 的 Java SOAP Web 服务,使用基本身份验证,连接被拒绝

java - 未处理的异常类型 Java InstantiationException

KeyListener 上的 Java SyntheticEvent

java - 将数组打印为字符串

c# - 在服务边界记录 WCF 错误

.net - WCF 是将服务公开给 Oracle Service Bus 的好选择吗