Open shfshanyue opened 3 years ago
Refresh Token,将会话管理流程改进如下。
客户端使用用户名密码进行认证
服务端生成有效时间较短的 Access Token(例如 10 分钟),和有效时间较长的 Refresh Token(例如 7 天)
客户端访问需要认证的接口时,携带 Access Token
如果 Access Token 没有过期,服务端鉴权后返回给客户端需要的数据
如果携带 Access Token 访问需要认证的接口时鉴权失败(例如返回 401 错误),则客户端使用 Refresh Token 向刷新接口申请新的 Access Token
如果 Refresh Token 没有过期,服务端向客户端下发新的 Access Token
客户端使用新的 Access Token 访问需要认证的接口
Refresh Token提供了服务端禁用用户 Token 的方式,当用户需要登出或禁用用户时,只需要将服务端的 Refresh Token 禁用或删除,用户就会在 Access Token 过期后,由于无法获取到新的 Access Token 而再也无法访问需要认证的接口。这样的方式虽然会有一定的窗口期(取决于 Access Token 的失效时间),但是结合用户登出时客户端删除 Access Token 的操作,基本上可以适应常规情况下对用户认证鉴权的精度要求。
TODO
Refresh Token,将会话管理流程改进如下。
客户端使用用户名密码进行认证
服务端生成有效时间较短的 Access Token(例如 10 分钟),和有效时间较长的 Refresh Token(例如 7 天)
客户端访问需要认证的接口时,携带 Access Token
如果 Access Token 没有过期,服务端鉴权后返回给客户端需要的数据
如果携带 Access Token 访问需要认证的接口时鉴权失败(例如返回 401 错误),则客户端使用 Refresh Token 向刷新接口申请新的 Access Token
如果 Refresh Token 没有过期,服务端向客户端下发新的 Access Token
客户端使用新的 Access Token 访问需要认证的接口
Refresh Token提供了服务端禁用用户 Token 的方式,当用户需要登出或禁用用户时,只需要将服务端的 Refresh Token 禁用或删除,用户就会在 Access Token 过期后,由于无法获取到新的 Access Token 而再也无法访问需要认证的接口。这样的方式虽然会有一定的窗口期(取决于 Access Token 的失效时间),但是结合用户登出时客户端删除 Access Token 的操作,基本上可以适应常规情况下对用户认证鉴权的精度要求。