我想在我的 Java 应用程序中使用 Windows NTLM 身份验证来透明地对 Intranet 用户进行身份验证。如果使用浏览器(单点登录),用户不应注意到任何身份验证。
我找到了一些支持 NTLM 的库,但不知道该使用哪一个:
- http://spnego.sourceforge.net/
- http://sourceforge.net/projects/ntlmv2auth/
- http://jcifs.samba.org/
- http://www.ioplex.com/jespa.html
- http://www.luigidragone.com/software/ntlm-authentication-in-java/
有什么建议从哪里开始?
最佳答案
在上面的列表中,只有 ntlmv2-auth 和 Jespa 支持 NTLMv2。 Jespa 可行但商业化。 ntlmv2-auth 我还没有尝试过,但它是基于 Liferay 的代码,我以前见过它在工作。
'ntlm-authentication-in-java' 只是 NTLMv1,它是旧的、不安全的,并且随着人们升级到更新的 Windows 版本,它在越来越少的环境中工作。 JCIFS 曾经有一个 NTLMv1 HTTP 身份验证过滤器,但它在后来的版本中被删除,因为它的实现方式相当于对不安全协议(protocol)的中间人攻击。 (“ntlm-authentication-in-java”似乎也是如此。)
“spnego”项目是 Kerberos 而不是 NTLM。如果您想像 IIS 那样复制完整的 IWA,则需要同时支持 NTLMv2 和 Kerberos(“NTLM”auth、“Negotiate”auth、NTLMSSP-in-SPNego auth 和 NTLM-masquerading-as-Negotiate auth)。
关于java - 在 Java 应用程序中使用 NTLM 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020734/