基于 token 的鉴权以及常见的实现方式

时间:2024-10-10 16:32:58

基于 token 在鉴权,体现在 token 的生成方式以及存储方式上的差异,在实现上有多种方式。最常见都有以下两种:

一)弱约定型

  • 特点
  1. token 的生成根据需求和喜好自定义,常见是(用户信息+时间戳)的base64/md5编码。
  2. 需要借助其他缓存中间件(如redis)保存 token 和用户信息
  3. 客户端发送发送请求到服务器进行鉴权时,除了必须带上 token 外,必须带上用户唯一id。服务端检验类似于 username + password 校验机制
  4. 鉴权通过后,从缓存中返回该用户的用户信息给客户端
  5. 服务器无需存储秘钥
  • 说明
    • 因为 token 中加入了时间戳,因此一般无法从 token 中直接逆向获取用户信息,必须另外存储用户信息,供鉴权通过后返回客户端
  • 缺点
    • 需要额外使用第三方中间件,增加使用成本与不确定性(中间件持久层出现问题)

二)强约定型

  • 特点
  1. token 的生成根据业内规定,按照一定规则生成
  2. token 保存的用户信息,可以逆向解析,供鉴权通过后返回客户端直接使用
  3. 不用单独存储用户信息
  4. 服务器需要存储秘钥
  5. 服务端检验类似于 业内规则 + 秘钥
  6. 无需额外借助其他缓存中间件