java - 如何从具有 NTLM 身份验证的 Java 客户端调用基于 .Net 的 Web 服务

标签 java web-services jax-ws ntlm

我想从 Java 客户端代码调用基于 .NET 的 Web 服务。我使用 wsimport 工具生成了 JAX-WS stub 。

这是在 .NET 客户端中创建凭据的方式-

NetworkCredential credential = new NetworkCredential(userName, password, "domain");
client.ClientCredentials.Windows.ClientCredential = credential ;

我们如何在 Java Client 中做类似的事情?我搜索了很多,发现一些帖子建议进行 NTLM 身份验证,但我不确定该怎么做。

最佳答案

JAX-WS 不支持 NTLM 身份验证,但您仍然有几个选择

备选方案 1: 创建您自己的身份 validator 并将其设置为默认值,它将用于您所有的 HTTP 通信。 仅当通信是 server2server 时才使用此替代方法,因为使用多个多个用户帐户并不是最佳选择。 你可以在这里看到如何实现它的代码:http://docs.oracle.com/javase/7/docs/technotes/guides/net/http-auth.html

备选方案 2: 另一种选择是使用 Axis2,它在后台使用 HTTPClient。它将选择适合您的场景的最佳身份验证方法。 axis2 client NTLM authentication

注意:Axis2 在某些版本的 NTLM 上存在问题,有些人建议迁移到 CFX CXF SOAP Client with NTLM to SharePoint

这些替代方案要求您在代码中包含新的库,希望对您有所帮助

关于java - 如何从具有 NTLM 身份验证的 Java 客户端调用基于 .Net 的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583718/

相关文章:

c# - 如何从 REST Web 服务返回自定义值

java - JAX-B 将字符串映射到 JAXBElement<String>

java - JAXWS运行时异常

Web 服务和单例 WCF 服务的 WCF 生命周期?

java - 我需要学习 Java 中的 Web 服务。它有哪些不同的类型?

soap - MTOM 和 SAAJ 提供的附件功能有什么区别?

java ssl 连接被拒绝,但它在本地机器上工作

java - Mac OSX 10.7.3 Intellij Idea 12 Android 模拟器崩溃

java - 一个 POJO 但 XmlRootElement 名称不同

java - 输入为空时 String.split() 的行为