【发布时间】:2021-04-03 05:19:51
【问题描述】:
在我的网络应用程序中,我使用访问和刷新令牌来授权用户访问受保护的资源,流程如下:
-
用户通过移动应用向“auth/token”端点发送请求,提供他的凭据。服务器对用户进行身份验证并发出访问和刷新令牌。刷新令牌保存在白名单中,以便日后在必要时将其撤消。
-
访问令牌到期后,移动应用会将刷新令牌发送到“/token/refresh”端点,以提供刷新令牌。新的访问/刷新令牌对被创建,旧的刷新令牌失效,以这种方式实现令牌轮换。
现在的问题: 假设客户端刷新令牌但由于网络丢失而从未收到来自服务器的响应。 30 分钟后,客户端尝试再次刷新,但其令牌现在无效并且用户已注销。在 Oauth 实现中,我们可以为旧令牌设置一个时间,之后该令牌将失效,从而使移动应用程序可以在出现任何问题时重新发送相同的刷新令牌。但我不认为这是一个解决方案,因为我们无法确定移动客户端何时重试刷新令牌。它可能在几分钟、几小时或更糟的几天内。 您如何解决这个问题?
【问题讨论】:
标签: oauth-2.0 access-token refresh-token