™技术博客

框架 | 14.oauth2协议下认证中心优化

2021年8月14日

原有认证方式问题


  1. 认证中心 checktoken 接口去调用的是 redistokenstore 的序列化信息,若我们更新用户信息 、权限信息 并不会试试更新,需要用户重新登录
  2. 性能瓶颈问题, 每次携带令牌调用资源服务器都会先执行 checktoken 网络远程校验令牌

优化扩展方案


  1. 重构资源服务器的 ResourceServerTokenServices ,直接本地调用 redis 查询 token 对应的用户username
  2. 然后根据 username 调用 userDetailsService.loadUserByUsername 用户的全部信息(实时数据和库同步,使用cache 同步)

缺点:

  • 这样相当于所有资源服务器 直接访问认证服务器的redis数据,而不是通过rul请求的方式,会造成安全性的问题
    (例如所有资源服务器都可以实时访问认证服务器的redis数据源) 做不到一个资源服务器一个redis库

实现参考 EnableAiopsResourceServer


  • isLocal=true 本地校验 提高性能,但是破坏了安全性,内网下建议采用
  • isLocal=false 远程校验 遵循oauth2.0通用协议,牺牲性能

扫描二维码,分享此文章