jwt与token+redis,哪种方案更好用? - 知乎

两种Token:
    1. 去中心化的JWT token
        优点:
            1. 去中心化,便于分布式系统使用
            2. 基本信息可以直接放在token中。 username,nickname,role
            3. 功能权限信息可以直接放在token中。用bit位表示用户所具有的功能权限。


        缺点:服务端无法主动让token失效

    2. 中心化的 redis token / memory session等
        优点:服务端可以主动让token失效
        缺点:每次都要进行redis查询。占用redis存储空间。


    3. 优化方案:
        3.1. Jwt Token中,增加TokenId字段。
        3.2. 将TokenId字段存储在redis中,用来让服务端可以主动控制token失效
        3.3  牺牲了JWT去中心化的特点。
         3.4  使用非对称加密。颁发token的认证服务器存储私钥:私钥生成签名。其他业务系统存储公钥:公钥验证签名。

回答方案2和3.2的区别:

方案2:redis存储的是token的白名单。用户的其他信息也要放在redis中存储。需要占用较大的redis空间和查询次数。

方案3.2 :这里的redis只存储tokenId的黑名单,同时redis也可以分布式部署,读写分离。token认证服务器操作redis的master,其他redis同步master的数据


原网址: 访问
创建于: 2021-02-21 10:02:13
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论