问题
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