我们决定从 Hazelcast 共享会话切换到使用 OAuth2 进行无状态 JWT 身份验证/授权,并发现了一个不适合我们下面描述的基础架构的问题。
因此,我们有多个独立系统 (scs),可以通过直接链接访问,即mysite.com/scs1和mysite.com/scs2。
每个 scs 都有自己的 UI 和后端,但“会话”(通过无状态 JWT 授权实现)必须在多个 scs 中有效。
OAuth2 授权服务器是专用服务器 (UAA)。在 OAuth2 术语中,每个 scs 都是一个资源服务器。
假设用户已登录scs1(通过 UAA)并获得 TTL=10 分钟的 JWT 和 TTL=30 分钟的 RefreshToken。然后他将该选项卡留在浏览器中 15 分钟。JWT 过期,但该选项卡仍包含来自scs1的上一页。并且用户单击该页面上的链接到mysite.com/scs3。
scs3收到请求,检查 JWT 并发现它已过期。但是我们有一个可以刷新 JWT 的 RefreshToken(仍然存在 15 分钟)。
是否可以从scs3返回要求浏览器转到 UAA 并静默刷新 JWT 的响应?
也许某种 REDIRECT 到 /uaa/authorization 能够添加 RefreshToken 标头?