无感刷新双token

无感刷新是一种技术手段,用于在用户不知情的情况下自动更新用户的访问令牌(access token)。这种技术通常用于基于OAuth 2.0协议的认证系统中,以确保用户会话的安全性和连续性。以下是无感刷新的基本概念及其工作原理:

基本概念

  • Access Token: 访问令牌,用于客户端向受保护的资源发起请求时携带,以证明自己的身份。
  • Refresh Token: 刷新令牌,用于客户端在access token即将过期或已经过期时,向认证服务器请求一个新的access token。
  • Authorization Server: 认证服务器,负责管理用户身份验证过程,发放和管理access tokens和refresh tokens。
  • Resource Server: 资源服务器,提供受保护的资源,需要有效的access token才能访问。

工作流程

  1. 初次登录:

    • 用户登录应用。
    • 应用向认证服务器发送身份验证请求。
    • 认证服务器验证用户身份后,返回一个access token和一个refresh token给应用。
  2. 使用Access Token:

    • 客户端(通常是Web应用或移动应用)使用access token访问资源服务器提供的资源。
  3. Access Token过期:

    • Access token有一个有限的有效期,当它过期时,客户端无法再使用它来访问资源。
  4. 无感刷新:

    • 当access token接近过期时(通常是在过期前几分钟),客户端自动使用refresh token向认证服务器请求一个新的access token。
    • 认证服务器验证refresh token的有效性,并生成一个新的access token。
    • 新的access token被返回给客户端。
    • 客户端收到新的access token后,会用它替换旧的access token,并继续正常使用,整个过程中用户没有察觉到任何中断。
  5. Refresh Token过期或失效:

    • Refresh token也有一个有效期,当它过期时,用户需要重新登录以获取新的access token和refresh token。
    • 如果refresh token被服务器撤销或标记为无效,则用户同样需要重新登录。

优点

    • 无缝体验:用户在使用应用时不会感觉到认证过程中的中断。
    • 安全性:access token的有效期较短,减少了潜在的安全风险;refresh token则存储在客户端的安全位置,用于获取新的access token。
    • 效率:避免了频繁的身份验证过程,减少了服务器负载

  1. 注意事项
    • 刷新时机:客户端需要合理地确定何时启动无感刷新流程,通常是在access token过期前的一定时间内。
    • 刷新失败后的处理:如果刷新失败,客户端需要有适当的机制来处理这种情况,比如提示用户重新登录。
    • 刷新令牌的安全存储:客户端需要确保refresh token的安全存储,防止被恶意软件或第三方窃取。

为什么不采取:发送过期token 给后端后,后端检测到过期token ,直接在响应头添加新的token 的方案呢,双token 有什么优势吗 

前端在 access token 过期时发送过期的 token 到后端,后端检测到过期后在响应头中返回新的 token。这种方法的主要问题是它违反了 OAuth 2.0 协议的规范,因为 OAuth 规定过期的 token 应被视为无效,不应被用于任何进一步的操作。

工作中具体操作

与后端沟通,提供refresh token接口,当登录时,返回access token和用于刷新的refresh token,在响应拦截器中判断token是否过期,可以在还剩几分钟时,调用refresh token接口,从而获取新的token。

  • Refresh token也有一个有效期,当它过期时,用户需要重新登录以获取新的access token和refresh token。
  • 如果refresh token被服务器撤销或标记为无效,则用户同样需要重新登录。
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值