分布式spring应用中的身份验证和会话管理

分布式spring应用中的身份验证和会话管理,spring,spring-security,jms,cas,shiro,Spring,Spring Security,Jms,Cas,Shiro,我正在将单模块SpringWeb应用程序迁移到基于JMS的模块化体系结构中。这就是现在应用程序的结构和我的目标 我将使用一个基于CAS的SSO服务器来进行身份验证。技术堆栈将是SpringBoot、ApacheCamel、ActiveMQ和SpringSecurity/ApacheShiro 例如,我将有一个库存应用程序、财务应用程序和CAS应用程序(SSO服务器)。在某些地方,我必须管理一个集中的会话存储,它将保存当前的用户ID和他们的首选项 用例: 用户登录CAS SSO并转到资源清册模块。

我正在将单模块SpringWeb应用程序迁移到基于JMS的模块化体系结构中。这就是现在应用程序的结构和我的目标

我将使用一个基于CAS的SSO服务器来进行身份验证。技术堆栈将是SpringBoot、ApacheCamel、ActiveMQ和SpringSecurity/ApacheShiro

例如,我将有一个库存应用程序、财务应用程序和CAS应用程序(SSO服务器)。在某些地方,我必须管理一个集中的会话存储,它将保存当前的用户ID和他们的首选项

用例:

  • 用户登录CAS SSO并转到资源清册模块。库存模块将获取当前用户ID及其首选项(从中央会话存储?),并启动销售交易
  • 库存完成工作后,它通过ApacheCamel向财务部门发送一条JMS消息,以便过账会计条目
  • 财务应用程序从获取当前用户id和首选项 会话并完成帐户过帐

  • 如何为上述场景(Spring session会有帮助吗?)创建一个公共会话存储(几乎连接到SSO服务器),以及如何让每个应用程序知道谁是执行此事务的实际用户。

    好的,这是一个没有回答的老问题,请查看Spring session,这正是

    到目前为止,最常见的会话存储是Redis,但它也支持其他存储,例如,我使用Hazelcast

    此外,使用CAS只会影响Spring的安全性,因此您使用什么来验证用户与您如何管理会话无关


    在身份验证方面,请记住在服务之间有另一层身份验证(服务联合),这样就不会只有系统外的任何人向您的服务发送消息。

    谢谢Raul。顺便说一句,你没有迟到。我已经选择了OAuth2而不是CAS。你所有的观点都非常有效,去年我已经实现了其中的大部分,包括与redis的春季会议。这是一个快速而伟大的解决方案。