gpt4 book ai didi

spring - 负载均衡、Spring Security、ConcurrentSessionFilter

转载 作者:行者123 更新时间:2023-12-02 07:22:56 24 4
gpt4 key购买 nike

我有一个 Spring 2.5.6/Flex 应用程序设置并与 Spring Security 2.0.4 一起运行。最近部署了一个负载均衡器(A Foundry ServerIron 4g http://www.foundrynet.com/products/a...ems/si-4g.html),现在我遇到了跨域错误。基本上,负载均衡器正在向 myloadbalancer.abc.com 发出请求,并且 myrealserver1.abc.com 将作为域名返回。 Spring安全性以某种方式将请求转发到真实服务器。我该如何解决这个问题?

ConcurrentSessionFilter 也不再工作。该应用程序设置为禁用并发登录,但该功能在应用程序置于负载平衡器后面后停止。我相信也有多个 Oracle 应用服务器集群在一起。我以前从未处理过集群或负载均衡器,并且我不知道软件在某些领域必须以不同的方式编写。

对我来说,这些听起来像是不同的问题,但我需要针对这两个问题的帮助。

最佳答案

关于你的第二个问题:

如果 ConcurrentSessionFilter 停止工作(即不再阻止并发 session ),这可能是由于具有粘性 session 的集群应用程序容器造成的。

在这样的设置中,集群的每个节点都独立工作,不与其他节点共享状态。相反,负载均衡器确保现有 session 始终由同一节点提供服务。

现在 Spring Security 的 ConcurrentSessionController通过将 session 映射到主体来工作。 Controller 本身依赖HttpSessionEventPublisher发送ApplicationEvents用户 session 的启动和终止。

如果有人打算打开多个 session ,但最终在他已经打开了一个 session 的同一节点上,一切都会正常进行。 HttpSessionEventPublisher通知并发 session 机制 session 的创建,并且身份验证将失败,因为已经存在与该用户关联的 session 。然而,在另一个节点上,该用户还没有 session ,因此 ConcurrentSessionController没有提示并且登录成功。

幸运的是,解决问题应该很容易:实现您自己的 SessionRegistry并为所有节点使用共享数据存储(例如应用程序的数据库)。

关于spring - 负载均衡、Spring Security、ConcurrentSessionFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/507480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com