3

我们有一个返回登录用户名(Windows NTLM)的应用程序,我们通常会传递给所有其他应用程序以检查身份验证部分。

我想知道是否可以从返回用户名的应用程序传递用户名并传递给我们使用 Spring 3 开发的新 Web 应用程序?这样我们就可以利用 Spring Security 特性

如果可能的话,我该如何使用它?

由于我们已经有一个返回 Windows 用户的应用程序,因此管理层不鼓励使用 Kerberos 和其他 SSO 方法。

任何帮助或见解都是非常有帮助和有益的。

谢谢

4

2 回答 2

1

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

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:42:24.883 回答
1

您可以将您的用户名与应用程序 URL 绑定,例如“localhost:port/somename/j_spring_check?j_username=your username”。

于 2013-03-21T07:05:49.747 回答