在使用 OAuth 2.0 JWT 刷新 token 实现时,我遇到了一个问题,即在 Web 浏览器客户端上实现可靠的刷新策略真的很困难。多个选项卡可能会导致请求出现竞争情况。
RFC 没有明确提到服务器端的刷新 token 仅对一个(第一个)请求有效,但我认为在使用刷新 token 时使它们无效是一个好主意。
堆栈溢出已经有多个“解决方案”,但似乎没有一个是直接的。
一种解决方案是向请求添加抖动并通过本地存储同步请求。
如果我理解正确,您会在请求启动时将变量放入本地存储,其他选项卡检查是否设置了此变量,然后不开始刷新?你知道这个的示例实现吗?也许在 React 中?
最佳答案
上面的答案并没有真正回答这个问题:
通过浏览器中的 PKCE 和授权代码流,可以使用和存储刷新 token ,但正如原始海报所说,刷新时必须小心(特别是当刷新 token 只能使用一次时,这是浏览器环境所需要的!)...
关于authentication - OAuth 2.0 刷新 token 多个选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61815011/