无需用户手动输入凭证刷新Refresh Token的机制相关问题咨询
Access Token与Refresh Token相关问题解答
首先你对access token和refresh token的运行机制理解完全正确。
1. Refresh Token到期时是否会被自动登出?
绝大多数场景下不会在业务操作过程中直接被系统踢下线。refresh token的过期校验只会在你调用接口用它换取新access token的时候触发:如果你当前持有的access token还在有效期内,哪怕refresh token刚好到达30天的过期时间点,你携带有效access token请求业务资源的操作完全不受影响,不会触发登出。
只有当当前access token过期,你拿着已经到期的refresh token去申请新token时,鉴权服务才会返回过期错误,这时候系统才会触发登出逻辑,要求你重新完成身份认证。
2. 无需手动输入凭证刷新Refresh Token的实现机制
目前业界主流的无感知刷新方案有三类:
- 滑动刷新策略:这是使用最广泛的方案。每次你用有效的
refresh token申请新access token时,鉴权服务会同步返回一个全新的refresh token,新token的有效期会从当前时间重新计算30天。只要你在旧refresh token到期前有过主动刷新操作,就能持续拿到有效的新refresh token,完全不需要重新输入账号密码。比如你在第29天触发了一次token刷新,新的refresh token有效期就会延长到第59天。 - 长效会话绑定机制:部分内部系统会将
refresh token和后台存储的用户长效会话绑定,只要检测到用户30天内有活跃操作,后台会自动延长对应refresh token的有效期,不需要前端额外做token交换操作。这种方案实现简单,但安全风险更高,一般不会用于对外的C端产品。 - 静默身份校验机制:移动端、桌面端应用常用的方案。首次登录时应用会将加密后的硬件标识、可信环境凭证存在本地安全存储区域,当
refresh token过期时,应用会自动调用静默登录接口,用本地加密凭证完成身份校验,直接下发新的双token,整个过程用户无感知。这种方案对本地存储的安全等级要求很高,所有凭证都会做多层加密防止泄露。
所有无感知刷新机制都有安全兜底规则:如果用户连续超过30天完全没有任何活跃操作,没有触发过任何刷新逻辑,refresh token到期后就必须手动输入凭证重新登录,避免账号被盗用后长期持有权限。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

