2013-03-21 120 views
3

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

我想知道是否可以通过返回用户名 的应用程序传递用户名并传递给我们使用Spring 3开发的新Web应用程序?因此,我们可以利用Spring Security功能的使用

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

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

任何帮助或洞察力是非常有益的和有益的。

感谢

+0

春季网页应用程序,还是春季独立应用程序? – DavidA 2013-03-21 05:18:53

+0

SPNEGO是这样做的典型方式,但这基本上是一个kerberos解决方案,听起来像它不会飞。我想我还没有听说过另一种方式。 – DavidA 2013-03-21 05:22:08

+0

如果他们会让你做kerberos,你可以将AD设置为kerberosKDC并执行如下操作:http://blog.springsource.org/2009/09/28/spring-security-kerberos/ – DavidA 2013-03-21 05:23:12

回答

1

为您解决问题最简单的方法是:

1)安装Apache Web服务器,并配置使用modntlm

http://modntlm.sourceforge.net/ (类似于你可以用它来使用NTLM身份验证的Kerberos身份验证使用mod_auth_kerb使用http://modauthkerb.sourceforge.net/

2)将mod_jk配置到您的Selvlet容器(JBoss或Tomcat) http://tomcat.apache.org/connectors-doc/generic_howto/proxy.html 验证成功后,Apache将REMOTE_USER头发送到servlet容器。 头(根据名称)包含已验证用户的用户名 确保您配置tomcatAuthentication =“假”,让Apache来让apache的发送REMOTE_USER头

3)落实和春季安全你自己的配置PreAuthenticatedProcessingFilter: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6167 它应该与请求头验证过滤器非常相似: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6295 此外,您应该从用户名中省略域名。 用户名在NTLM或Kerberos验证后在REMOTE_USER标头中发送。

1

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

+0

塔伦您的意思是说我们应该按照以下方式将参数传递给Spring? '服务器:7001/getusername/SSO/j_spring_check为j_username = userid' – user75ponic 2013-03-21 07:15:26