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

问题描述 投票:3回答:1

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

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

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

我们如何在Java客户端中类似地执行此操作? 我搜索了很多,发现一些帖子建议进行NTLM身份验证,但我不知道该怎么做。

java web-services jax-ws ntlm
1个回答
1
投票

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

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

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

注意: Axis2在某些版本的NTLM上存在问题,有些人建议使用NTLM迁移到使用NTLM的 CFX CXF SOAP客户端

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

© www.soinside.com 2019 - 2024. All rights reserved.