我想从 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/