【问题标题】:Is it possible to use two different spring-session applications with one redis server?是否可以在一个 redis 服务器上使用两个不同的 spring-session 应用程序?
【发布时间】:2015-10-15 11:01:05
【问题描述】:

我已经开始成功地使用 spring session 与一个 nginx、两个 tomcats 和一个 redis 服务器来实现集群会话并且出现了一些问题。 首先,当我谈论不同的应用程序时,我指的是两个完全不同的应用程序,而不是指同一应用程序的两个实例。

我可以使用两个或多个不同的 spring-session 应用程序来存储只有一个 redis 服务器在生产中的会话吗?

这些应用程序可以在不同的tomcats实例中运行吗?

Spring session 如何避免使用一台redis服务器的不同应用程序之间的session id冲突?

是否需要附加后缀或前缀id来避免这个问题?

【问题讨论】:

    标签: spring spring-session


    【解决方案1】:

    Spring Session 目前不原生支持范围会话。有关跟踪此问题的详细信息,请参阅gh-166

    Spring Session 为会话 id 生成具有高熵的安全随机 id,因此发生冲突的可能性极低。

    这意味着您可以使用 Spring Session 为多个应用程序使用相同的 Redis 实例,只要您对以下语句表示满意:

    恶意用户可以将应用程序 A 的会话 ID 用于应用程序 B。为什么这很重要?考虑以下场景:

    • 应用程序 A 是一个公共应用程序,任何用户都可以为其创建帐户。
    • 应用程序 B 是一个私人应用程序,只有被邀请的用户才能注册。
    • 恶意用户创建帐户并使用应用程序 A 进行身份验证
    • 用户复制他们的应用程序 A 的会话 ID。他们导航到应用程序 B 并将会话 ID 粘贴到应用程序 B 的 cookie 中,现在已通过身份验证。

    这对您来说可能不是问题。例如,良好的安全实践将确保通过在应用程序 B 中查找 ADMIN 角色来正确授权用户。应用程序 A 不会填充该角色,因此当用户通过应用程序 B 进行身份验证时,他们无权使用它。

    【讨论】:

    • 我正在评估春季会议,它非常完美。我还将大约 30 个公司应用程序从 xml 迁移到 java spring 配置。现在的主要挑战是spring security java配置。我们有一个内部的 Single SignOn 解决方案,并将其与 Spring Security 集成。此 SSO 负责处理您所描述的有关恶意用户的问题。感谢您的回答@rob-winch。对不起我的错字。
    • 那我回答你的问题了吗?如果是这样,你能接受答案吗?如果没有,你能指出我的不足之处吗?
    猜你喜欢
    • 2015-09-01
    • 1970-01-01
    • 2011-05-24
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多