java - 将用户名传递给 Spring Security

标签 java spring spring-security ntlm

我们有一个返回登录用户名 (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/

相关文章:

java - Spring Security 登录总是登陆一个没有消息的错误页面

java - 如何访问传递的通用数组列表中的元素

java - Cometd 发布输入数据 Map 而不是等待服务器的输出

java - Android - SugarORM - 从表中选择对象

java - 考虑在您的配置中定义类型为 'org.springframework.data.mongodb.core.MongoTemplate' 的 bean

java - Spring : Is this member variable thread-safe?

tomcat - 可能的 Spring Boot 或 Spring Security 内存泄漏

spring - 如何在 Spring 安全性中刷新 token

java - 按字符串长度排序

java - Google App Engine 数据存储区 api 接受事务作为参数