1. 去中心化的JWT token
优点:
- 去中心化,便于分布式系统使用
- 基本信息可以直接放在token中。 username,nickname,role
- 功能权限信息可以直接放在token中。用bit位表示用户所具有的功能权限。
缺点:服务端无法主动让token失效
2. 中心化的 redis token / memory session等
优点:服务端可以主动让token失效
缺点:每次都要进行redis查询。占用redis存储空间。
这里 redis存储的是token的白名单。用户的其他信息也要放在redis中存储。需要占用较大的redis空间和查询次数。
3. 优化方案:
- Jwt Token中,增加TokenId字段。
- 将TokenId字段存储在redis中,用来让服务端可以主动控制token失效
- 牺牲了JWT去中心化的特点。
- 使用非对称加密。颁发token的认证服务器存储私钥:私钥生成签名。其他业务系统存储公钥:公钥验证签名。
这里的redis只存储tokenId的黑名单,同时redis也可以分布式部署,读写分离。token认证服务器操作redis的master,其他redis同步master的数据
本文探讨了去中心化的JWT令牌和中心化的Redis令牌在身份验证中的优缺点。JWT的优点在于其去中心化和信息内置,但无法主动失效;而Redis令牌允许服务端主动失效,但增加了查询负担。为解决这个问题,提出了优化方案:JWT中增加TokenId字段,并结合Redis黑名单存储,同时利用非对称加密确保安全性。此方案在保持一定程度的去中心化的同时,实现了服务端的主动控制。
3793

被折叠的 条评论
为什么被折叠?



