Oauth 2.0 Zuul API网关和资源服务器之间的HazelCast会话共享 SCENERIO

Oauth 2.0 Zuul API网关和资源服务器之间的HazelCast会话共享 SCENERIO,oauth-2.0,hazelcast,netflix-zuul,spring-session,api-gateway,Oauth 2.0,Hazelcast,Netflix Zuul,Spring Session,Api Gateway,我有Zuul服务器作为API网关,身份服务器带有Oauth2、ResourceServer1和ResourceServer2 ZuulServer、ResourceServer1和ResourceServer2与Hazelcast有一个分布式会话 以下是我执行的步骤- 到达zuul服务器的Http页面请求将重定向到identity server的登录页面。使用oauth2对用户进行身份验证。(返回一个jsessionid,路径为“/”) 在zuul网关接收到身份验证令牌后,使用Hazelcast

我有Zuul服务器作为API网关,身份服务器带有Oauth2、ResourceServer1和ResourceServer2

ZuulServer、ResourceServer1和ResourceServer2与Hazelcast有一个分布式会话

以下是我执行的步骤-

  • 到达zuul服务器的Http页面请求将重定向到identity server的登录页面。使用oauth2对用户进行身份验证。(返回一个jsessionid,路径为“/”)

  • 在zuul网关接收到身份验证令牌后,使用Hazelcast在分布式会话中保留身份验证令牌

  • 在Zuul网关的身份验证成功处理程序上,页面被重定向到ResourceServer1的主页

  • 对resourceServer1的网页调用通过zuul api网关进行路由,在网关处附加了身份验证令牌

  • 在显示主页之前,我在HomePage controller中编写了两个功能

  • 功能1-使用“测试会话”键为分布式hazelcast会话设置一个值

  • 功能2-对ResourceServer2进行RestTemplate调用(这里我附加了cookie)

  • 对ResourceServer2的RestTemplate调用通过Zuul API网关进行路由,在网关上附加了身份验证令牌

  • 控件访问ResourceServer2 rest api控制器并检查会话值。步骤2中保留的值可用,但步骤6的值不可用

  • 不久之后,主页显示在浏览器中(返回了带有ResourceServer1上下文路径的新会话)

  • 从web页面,通过Zuul api网关对ResourceServer1进行rest api调用,并在此处附加了身份验证令牌

  • 控件到达ResourceServer1控制器并返回预期值

  • 发现对于从web浏览器调用ResourceServer1的每个api,都会为ResourceServer1创建一个新会话

  • 问题 在过去的几周里,我一直被以下问题困扰着。请在这方面帮助我:-

  • 我希望ResourceServer2能够访问由ResourceServer1创建的会话信息。但我无法在ResourceServer2上获取会话信息,它总是返回null。我使用Hazelcast Mancenter检查了Hazelcast服务器,发现会话是分布式的

  • 在对资源服务器进行api调用时,如何限制新会话的创建?在步骤9、10和12中注意到了这一点。请注意,这里我想使用HttpServletReqest.getSession()获取在步骤2和6中创建的会话的值,该值创建了一个新会话。如果我删除代码以获取会话中的值,则不会创建新会话

  • 提前谢谢