java windows 身份验证_Java客户端调用Windows集成身份验证Web服务

我已经使用了Axis已经有几年了 - 然后,Axis依赖于Apache commons httpclient 3.从阅读一些邮件列表,它看起来像this is still the case。 (如果没有,最后一段应该提供一些值得欢迎的帮助。)

Apache commons httpclient 3不支持通过HTTP进行“集成Windows身份验证”(即与Kerberos的协商身份验证机制,又名“SPNEGO”。)实际上,它不支持NTLMv2,仅支持NTLMv1,这意味着您将无法对许多需要NTLMv2而无需修改的IIS服务器进行身份验证。

尽管无可厚非,但我认为最好的选择是创建一个新的AuthScheme,它调用Windows SSPI库进行身份验证。不幸的是,你需要使用JNI来做到这一点。幸运的是,AuthScheme已准备好执行基于会话的质询 - 响应身份验证模式(SPNEGO与已支持的NTLM类似)。基本上,您将base64编码输入和输出字节缓冲区为本地InitializeSecurityContext调用。我承认编写这个程序很繁琐,但我可以确认它确实可以让您对IIS服务器执行集成Windows身份验证。

(不幸的是,如果你需要你的客户是跨平台的,你还需要编写Unix上的必要GSSAPI代码。)

另一种方法是编写使用Java的Kerberos库新AuthScheme (JAAS)。我不太了解这些,说实话,因为它需要从系统kerberos库中单独配置。也就是说,在Windows上,您必须编写一些指向您的Active Directory服务器的Kerberos配置文件。在我看来,这并不是真正的“整合”。如果您将软件分发给客户,而且他们希望“只是工作”,这可能不适合您。另外,虽然JAAS已经有一段时间了,我相信,早期版本缺乏的是被要求谈谈对Active Directory一些身份验证机制,所以我想你会需要一个Java 6的运行时间。现在

,如果我错了,你可以使用Axis2的新的Apache HTTP组件HttpClient的4,那么你就好得多。 httpclient 4使用Java的Kerberos库支持SPNEGO,这意味着一旦您不必编写自己的AuthScheme,只需配置C:\ WINDOWS \ KRB5.INI,并且您应该能够利用集成Windows身份验证。但是,为了避免必须配置JAAS的手动步骤,您仍然需要调用本地SSPI方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值