Spring Security 的 jwt 与 token+redis方案

本文探讨了去中心化的JWT令牌和中心化的Redis令牌在身份验证中的优缺点。JWT的优点在于其去中心化和信息内置,但无法主动失效;而Redis令牌允许服务端主动失效,但增加了查询负担。为解决这个问题,提出了优化方案:JWT中增加TokenId字段,并结合Redis黑名单存储,同时利用非对称加密确保安全性。此方案在保持一定程度的去中心化的同时,实现了服务端的主动控制。
摘要由CSDN通过智能技术生成

1. 去中心化的JWT token
优点:

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

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

2. 中心化的 redis token / memory session等

优点:服务端可以主动让token失效

缺点:每次都要进行redis查询。占用redis存储空间。

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

3. 优化方案:

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

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

 

 

https://www.zhihu.com/question/274566992

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值