将用户名传递给Spring Security

时间:2013-03-21 05:10:59

标签: java spring spring-security ntlm

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

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

如果有可能,我该怎么用?

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

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

由于

2 个答案:

答案 0 :(得分:1)

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

1)安装Apache Web Server并配置为使用modntlm

使用NTLM身份验证

http://modntlm.sourceforge.net/ (类似地,您可以使用mod_auth_kerb使用http://modauthkerb.sourceforge.net/

来使用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过滤器非常相似: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6295 此外,您应该从用户名中省略域名。 在NTLM或Kerberos身份验证之后,用户名将在REMOTE_USER标头中发送。

答案 1 :(得分:1)

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