OAuth 2.0 刷新令牌多个选项卡

t16*_*16n 10 authentication race-condition oauth-2.0 jwt refresh-token

在使用 OAuth 2.0 JWT 刷新令牌实现时,我遇到了一个问题,即在 Web 浏览器客户端实现可靠的刷新策略确实很困难。多个选项卡可能会导致请求出现竞争情况。

RFC没有明确提到服务器端的刷新令牌仅对一个(第一个)请求有效,但我认为在使用刷新令牌时使它们无效是个好主意

关于堆栈溢出已经有多种“解决方案”,但似乎没有一个是直接的。

一种解决方案是在请求中添加 Jitter,并通过本地存储同步请求。

如果我理解正确,您会在请求启动时将一个变量放入本地存储中,其他选项卡检查是否设置了该变量,然后不开始刷新?您知道这个的示例实现吗?也许在反应中?

Gar*_*her 1

如果您使用的是无 cookie SPA,最常见的解决方案是避免刷新令牌并执行以下操作:

  • 使用OIDC 客户端库
  • 将令牌存储在内存或会话存储中(本地存储会增加许多浏览器问题)
  • 使用授权服务器的会话 cookie(在浏览器选项卡之间共享)通过隐藏的 iframe 进行更新

无 Cookie 水疗资源

如果我理解您的设置,以下是我的一些内容可能会有所帮助: