7

我正在使用 Spring 3 Web 应用程序,因为 Spring 3 不支持 NTLM 身份验证,还有哪些可以与 Spring 安全性一起使用的其他替代方案?这样用户在登录 Active Directory 时就可以通过应用程序进行身份验证?

Kerberos 解决方案目前不是一个选项,NTLM 是唯一的选项。

任何帮助都是非常可观的。

谢谢

4

3 回答 3

7

解决问题的最简单方法如下:

1) 安装 Apache Web Server 并使用 modntlm 配置使用 NTLM 身份验证

http://modntlm.sourceforge.net/ (类似地,您可以使用http://modauthkerb.sourceforge.net/ 使用 mod_auth_kerb 使用 Kerberos 身份验证)

2) 将 mod_jk 配置到您的 Selvlet 容器(JBoss 或 Tomcat) http://tomcat.apache.org/connectors-doc/generic_howto/proxy.html 成功验证后,Apache 将 REMOTE_USER 标头发送到 servlet 容器。标头(根据名称)包含经过身份验证的用户的用户名确保您配置 tomcatAuthentication="false" 以允许 Apache 允许 apache 发送 REMOTE_USER 标头

3)在Spring Security中实现和配置你自己的PreAuthenticatedProcessingFilter: http ://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6167 应该很类似Request-Header Authentication filter: http ://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6295 另外,用户名中应该省略域名. 用户名在 NTLM 或 Kerberos 身份验证后在 REMOTE_USER 标头中发送。

于 2013-03-21T06:43:00.917 回答
4

Waffle 是可与 springsecurity 一起使用的解决方案,以实现此目的: https ://github.com/dblock/waffle

我自己用过它,例如 hybris。他们有一些例子。注意使用 jna3.5 的 1.5 版本可能会导致高负载问题另外请注意,如果我们的应用程序需要进行授权,您可能需要扩展协商安全过滤器(我必须这样做,可能在 1.6 中修复。

于 2014-02-17T23:45:59.770 回答
3

我做过一次。在这里抓住它。它需要在 AD 级别进行一些小的设置。随时在这里或在 github 上提问。

于 2013-03-20T22:57:34.020 回答