在Java应用程序中使用NTLM身份验证

dea*_*mon 13 java windows security authentication ntlm

我想在我的Java应用程序中使用Windows NTLM身份验证来透明地验证Intranet用户.如果使用浏览器(单点登录),用户不应注意任何身份验证.

我找到了一些支持NTLM的库,但不知道使用哪一个:

有什么建议从哪里开始?

bob*_*nce 10

在上面的列表中,只有ntlmv2-auth和Jespa支持NTLMv2.Jespa是可行但商业化的.ntlmv2-auth我没有尝试,但它基于Liferay的代码,我以前见过它.

'ntlm-authentication-in-java'只是NTLMv1,它是旧的,不安全的,并且随着人们升级到更新的Windows版本而在不断减少的环境中工作.JCIFS曾经有一个NTLMv1 HTTP身份验证过滤器,但它在以后的版本中被删除,因为它的实现方式相当于对不安全协议的中间人攻击.("ntlm-authentication-in-java"的情况也是如此.)

'spnego'项目是Kerberos而不是NTLM.如果要在IIS执行时复制完整的IWA,则需要同时支持NTLMv2和Kerberos('NTLM'auth,'Negotiate'auth,NTLMSSP-in-SPNego auth和NTLM-masquerading-as-Negotiate auth).