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

标签 java windows security authentication ntlm

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

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

有什么建议从哪里开始?

最佳答案

在上面的列表中,只有 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/

相关文章:

java - 使用@Min(0)验证整数遇到NumberFormatException

java - 文件删除问题

php - PHP exec 命令中使用的密码存储在哪里?

javascript - Google Analytics 如何防止流量欺骗

html - 如何告诉浏览器不要提供保存不正确的密码?

java - java中动态存储对象在未分配的对象中

java - 多线程访问非同步Map

c# - 使用 HttpClient 在 localhost 上调用 rest api 导致 401 Unauthorized,IIS 8.5

windows - 新版本发布后,我可以使用以前版本的 Azure SDK 多长时间?

windows - 带 Vagrant 的 Ngrok 在 Windows 10 中不起作用