何时刷新访问令牌

Szy*_*947 2 oauth-2.0 openid-connect refresh-token

我的问题是确定何时刷新访问令牌。

我读过,我应该在每次请求之前刷新新的访问令牌,但它在其他地方说不建议这样做。所以我的问题是我是否应该在每次请求之前刷新访问令牌,或者发送请求并在收到 401 未经授权状态后刷新访问令牌并重试对指定资源的请求。

And*_*ndy 8

您可以采取任何一种方式,您知道访问令牌何时即将过期,例如 1 分钟前,您使用刷新令牌来获取一组新的刷新/访问令牌。

在 401 上执行此操作也是一种选择,但这意味着您需要执行额外的请求,并且还需要注意一些竞争条件,因为在许多配置中您只允许一次性使用刷新令牌(您每次都会获得一个新的刷新令牌)。因此,使用 401 方法时,您需要确保不会发送许多并发请求来为同一用户获取新令牌。


Ken*_*han 7

您可以从访问令牌获取到期时间(通常在名为exp且格式为 unix 时间戳的字段中)。因此,每当您准备向资源服务器发送HTTP请求时,您都可以检查访问令牌是否已经过期或即将过期(例如60秒)。

如果是,请尝试使用刷新令牌获取新的访问令牌,并更新返回的存储在应用程序内的新访问令牌和刷新令牌。否则,只需继续使用现有的访问令牌。