首页 文章

具有NTLM身份验证的SOAP Web服务的Java客户端

提问于
浏览
5

我花了很多天,试图找到一个可以连接到使用Negotiate / NTLM身份验证的Microsoft Dynamics CRM的适当Java框架 . 我尝试了有关Stackoverflow和其他资源的所有现有建议,其中包括JAX-WS,Axis2,CXF以及各种HTTP协议处理程序 . 没有人像预期的那样工作 . 目前最好的方法是Axis2 / commons-httpclient-3.1,我可以使用NTLM摘要跟踪至少所有三个阶段,但目标IIS仍然拒绝使用401 Unauthorized进行身份验证 . Apache CXF - 具有内置的Java6 NTLM支持和jCIFS,有些人建议作为补救措施,不能正常工作,因为前者在第二个401响应失败(同时它本应发送第三个请求,根据协议),后者尝试从空输入流中读取响应代码并失败 .

那么,问题是是否有人成功地从Java 6平台掌握了受NTLM保护的SOAP Web服务?

2 回答

  • 1

    我希望其他人会参与其中,因为我对这个领域的了解现在已有几年了,也许不是最好的建议 - 特别是,我只使用了commons-httpclient 3而且没有一个新的软件包承诺做NTLM / NTLMv2正确 .

    正如您所知,NTLM身份验证代码仅支持NTLM,而不支持较新的NTLMv2协议 . 我对此问题的解决方案是使用commons-httpclient 3并将NTLM身份验证代码替换为支持NTLMv2的解决方案 . 幸运的是,NTLMv2规范是published by Microsoft . 它现在是你必须保持自己的东西,这可能由于许多原因而不可取 .

  • 0

    我忘了这么说我自己确实找到了解决办法 . 线索是用Jespa jCIFS替换标准Java协议栈,并制作一些小补丁来使用JAX-WS .

相关问题