如何在 Spring Security 中的子域之间共享会话
Posted
技术标签:
【中文标题】如何在 Spring Security 中的子域之间共享会话【英文标题】:How to share session between subdomain in Spring Security 【发布时间】:2014-01-29 04:18:52 【问题描述】:我正在使用 spring 和 spring security 来实现多个域和子域项目。 喜欢 test.example.com/damo1 test.example.com/demo2
两者都是具有相同域的不同应用程序。在这两个应用程序中,我都应用了弹簧安全性。我想登录 demo1 应用程序,但还要求再次登录 demo2 应用程序。我想申请单点登录。
Cookie 共享成功,但仍要求登录。 任何人都可以帮助我春季安全有什么变化吗? 请帮我? 提前谢谢
【问题讨论】:
这是一个应用程序容器问题。一般来说,如果没有一些特定于容器的设置,您将无法在应用程序之间共享会话。如果您想使用 Spring Security 解决它,您可以创建自定义 SecurityContextRepository 或使用 CAS 等 SSO 解决方案。 【参考方案1】:您需要在两个不同的应用程序之间共享 sessionId。
为此,您需要一种方法(首选:数据库)在集群节点之间共享会话。当用户(从任何应用程序)通过身份验证时,将 sessionId 和 userdetails 保存在数据库中。
当用户向服务器发送请求时,使用数据库中的会话 ID 验证会话 ID。
【讨论】:
以上是关于如何在 Spring Security 中的子域之间共享会话的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security - 更改 RedirectStrategy 的所有实例