【问题标题】:Sharing security context between few web applications在少数 Web 应用程序之间共享安全上下文
【发布时间】:2012-12-16 19:20:39
【问题描述】:

我需要有一个 web 应用程序,它实际上由几个单独的战争组成,统一到 UI 上的同一个导航栏,我需要保护所有系统,但只对主 web 应用程序进行身份验证,并且在此安全上下文自动传播到子 web 之后应用程序。我正在使用spring security,有人可以帮我建议吗?谢谢

【问题讨论】:

  • 请澄清 - 你的 WAR 是否被打包到单个 EAR 中?
  • 不,它在同一个 servlet 容器中完全独立的战争,我只需要在用户登录到主应用程序后向它们传播身份验证,首先想到的是 cookie 上的安全令牌,但它似乎不那么健壮
  • 无论哪种方式,您似乎都应该使用 CAS(请参阅 Spring 文档)
  • 需要提一下,所有这些 WAR 都像 OSGI 容器中的捆绑包一样开始

标签: spring security web


【解决方案1】:

这可以通过以下方法来实现。在 Spring 中,SecurityContext 默认存储在HttpSession 中。相反,您可以将其配置为存储在某个共享存储库中。

因此,应该更改配置以使用您自己的 SecurityContextRepository 实现而不是 HttpSessionSecurityContextRepository。配置完成后,安全框架将查看可用于所有 Web 应用程序的 Repository

Repository 可以是数据库或缓存服务器。

【讨论】:

    【解决方案2】:

    Spring Security 将登录数据存储在 http 会话中。所以我会尝试在应用程序之间共享会话。

    通过使用Single Sing On 属性,这似乎是可能的(在 Tomcat 中)。

    但请注意,在两个应用程序之间共享会话并非没有危险。见this Stack Overflow question

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多