Jon*_*ero 5 .net websphere ntlm jax-ws active-directory
我想从IBM WebSphere使用.Net WS.
我使用JAX-WS IBM实现创建了一个WS-client,它在IIS上使用.Net WS.客户端在SUSE上,身份验证由NTLM和Windows Server 2003 Active Directory进行.
如果客户端在命令行中执行,则实现调用java.net.Authenticator来获取凭据,并且请求成功.
如果客户端在RAD内执行,则不会调用Authenticator,并且401失败.
如果客户端在WebSphere中执行,则不会调用Authenticator,并且401失败.
如果我直接在.Net WS URL上创建HttpConnection,则会调用Authenticator并且请求成功.
如果不使用JAX-WS IBM实现,我使用Axis2(直接,而不是IBM Axis2 JAX-WS实现),我可以将Authenticator对象传递给Axis2客户端,并且请求是成功的.这仅适用于Windows Server 2003的NTLM协议.当我们迁移到Windows Server 2008时,auth协议是NTLMv2(由于NTLM的安全问题,所有人都转移到NTLMv2)并且请求失败,因为HTTP客户端3不支持NTLMv2. X是Axis2的依赖关系.并且有一段时间他们不会迁移.
如果我使用JAX-WS的其他实现而不是IBM,那么我将失去控制台管理和自动注释读取,以及IBM的支持.
问题
我不明白为什么在RAD内部它不起作用,是从命令行工作的相同程序.
如何使用具有特定凭据的NTLMv2协议支持使JAX-WS IBM实现进行身份验证?(java.net.Authenticator为您提供了这个,它应该被调用...它没有)
是否有任何方法可以使IBM JAX-WS实现使用另一个HTTP客户端而不是标准客户端?
甚至IBM JVM实现也提供了NTLM auth(这就是命令行和直接HttpConnection执行工作的原因)所以我不明白为什么他们不将它用于IBM WS栈.
加分
有没有什么好方法可以通过ActiveDirectory身份验证提供使用WS的双向能力?
评论
Spring WS使用支持NTLMv2 auth的HttpClient 4.X,但我需要一个JAX-WS实现,它应该是IBM的实现.IBM JAX-WS似乎只支持Basic AUTH.我不明白Microsoft WS互操作对IBM来说并不重要.
参考
认证者conf:
提前致谢!
最后,这就是我所做的。
我使用 RAD 插件创建 JAXB 对象来创建 JAX-WS 客户端。我使用生成的 DTO 作为传递给 Spring WS 库的消息。Spring WS 2.1 附带了 Http Client 4.2,它带来了 NTLMv2 支持。
我创建了一个小型库来使这个过程更容易,但程序的想法是:
WebServiceTemplate(Spring 对象)Web 服务调用。因此,您最终要做的就是重用 JAX-WS 客户端的对象生成,将服务方法的参数包装到 Spring WS 进行调用所需的对象中。
对于设置NTCredentials为WebServiceTemplate发件人的 NTLM 身份验证。
Axis2 1.7将通过更新版本的 HttpClient 4.2.X 支持 NTLMv2,但尚未公布发布日期。
看:
WebServiceTemplateWS 呼叫WebServiceTemplate发件人NTCredentials更新:我测试了 Axis 1.7,NTLM 身份验证运行良好。
| 归档时间: |
|
| 查看次数: |
2900 次 |
| 最近记录: |