我们有一个返回登录用户名 (Windows NTLM) 的应用程序,我们通常会传递给所有其他应用程序以检查身份验证部分。
我想知道是否可以从返回用户名的应用程序中传递用户名 并传递给我们使用 Spring 3 开发的新 Web 应用程序?这样我们就可以利用 Spring Security 的特性
如果可能的话,我该如何使用它?
由于我们已经有一个返回 Windows 用户的应用程序,管理层不鼓励使用 Kerberos 和其他 SSO 方法。
任何帮助或见解都是非常有帮助和有益的。
谢谢
最佳答案
解决问题的最简单方法如下:
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 header 发送到 servlet 容器。 header (根据名称)包含经过身份验证的用户的用户名 确保配置 tomcatAuthentication="false"以允许 Apache 允许 apache 发送 REMOTE_USER header
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 header 中发送。
关于java - 将用户名传递给 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15539983/