【问题标题】:Pass username to Spring Security将用户名传递给 Spring Security
【发布时间】:2013-03-10 12:25:21
【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

  • 是spring web app,还是spring单机app?
  • SPNEGO 是典型的实现方式,但这基本上是一个 kerberos 解决方案,听起来它不会飞。我想我还没有听说过其他方法。
  • 如果他们允许您执行 kerberos,您可以将 AD 设置为 kerberosKDC 并执行以下操作:blog.springsource.org/2009/09/28/spring-security-kerberos
  • @DavidA 不幸的是,现在不考虑 Kerberos 和 SPNEGO。
  • 你看到下面的答案了吗?有帮助吗?

标签: java spring spring-security ntlm


【解决方案1】:

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

1) 安装 Apache Web Server 并使用 modntlm 配置使用 NTLM 身份验证

http://modntlm.sourceforge.net/ (类似地,您可以使用 http://modauthkerb.sourceforge.net/ 使用 mod_auth_kerb 使用 Kerberos 身份验证)

2) 为您的 Selvlet 容器(JBoss 或 Tomcat)配置 mod_jk 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 标头中发送。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Tarun 你的意思是说我们应该通过以下方式将参数传递给Spring? server:7001/getusername/sso/j_spring_check?j_username=userid
    猜你喜欢
    • 2017-07-24
    • 2013-09-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 2020-03-25
    • 2014-08-07
    相关资源
    最近更新 更多