How to invoke the .Net Based webservice from a java client with NTLM authentication

五迷三道 提交于 2019-12-22 10:16:21

问题


I want to invoke the .NET Based webservice from a java client code. I generated JAX-WS stubs using wsimport tool.

This is how credentials are being created in .NET client-

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

How do we do it similarly in Java Client? I searched a lot and found some posts suggesting to do NTLM authentication but I am not sure how to do that.


回答1:


NTLM authentication is not supported by JAX-WS but you still have a couple alternatives

Alternative 1: Create your own authenticator and set it as default, it will be used for all of you HTTP communications. Use this alternative only if the communication is server2server, since it's not optimal to use multiple multiple user accounts. You can see the code of how to implement it here: http://docs.oracle.com/javase/7/docs/technotes/guides/net/http-auth.html

Alternative 2: Another alternative is to use Axis2, which uses the HTTPClient behind the scene. It will select the best authentication method suited for your scenario. axis2 client NTLM authentication

Note: Axis2 has issues with some versions of NTLM and some people is recomending to move to CFX CXF SOAP Client with NTLM to SharePoint

These alternative require you to include new libraries in your code, I hope it helps



来源:https://stackoverflow.com/questions/36583718/how-to-invoke-the-net-based-webservice-from-a-java-client-with-ntlm-authenticat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!