由于access_token的生命周期很短,为了方便用户,使用refresh_token。
假设我们有客户端移动iOS/Android应用程序。在用户提供其用户名和凭据的第一次登录后,后续请求将发送到服务器端,服务器端使用访问和刷新令牌进行响应。
但是,如果在访问令牌过期前还剩 1 分钟或已经过期怎么办?验证过程应该在服务器端进行吗?
服务器获取请求(例如网关代理(,从标头读取身份验证令牌,验证过期时间,如果存在刷新令牌,则在后台更新令牌(例如在标头中(,修改初始请求并继续新创建的access_token?
或者这种迭代应该执行客户端应用?在每个请求上验证expires_in日期,如果是,请使用refresh_token授权类型请求新access_token,并且仅在此之后进行远程调用?
根据 OAuth 的说法,当初始令牌过期时,根据具体情况,应通过将refresh_token
值发送到相应的服务器终结点来刷新它。服务器执行刷新操作,生成新令牌,以便您获得具有新expires_in
日期的新token
。对于客户端应如何发送刷新令牌,您可以获得许多选项,例如:
- 具有计时器并在令牌过期之前发送刷新操作。
- 如果您有 401 状态错误。
我建议您编写HTTP拦截器,当响应获得401代码时,您应该发送刷新操作。