关于Spring Cloud Alibaba 集成Shrio设计系统鉴权的思路

最近一直忙于公司项目,公司新合作了两个客户,因此大部分的时间我都在API的对接中,以至于没时间更新博客,趁着国庆放假,写一下我对微服务中设计鉴权模块的思路,顺便祝各位国庆长假快乐!

由于我们的系统不算大型,所以在1.0的单体架构中我所选用的安全框架是Shrio,放弃了重量级的Spring Security,因此在2.0微服务架构上,我们依然用回Shrio,但是在设计上与单体架构还是有一些区别的。

⭐首先Shiro是一个功能强大,简单的安全框架。对传统的单机系统支持较好,但与微服务整合后比较麻烦,网上资料比较散乱,因此我得记录下我的实现方法。

之前的文章说过,有两种解决方法,一种是网关和鉴权放在同一个微服务上实现,另一种则是分开,而我设计的就是后者。思路如下:

  1. 前端发送登陆请求,首先进入网关,网关通过识别URL进入登录服务(鉴权服务)
  2. 登录成功后Shiro会生成session并将sessionId返回前端,session中包含用户基本信息及权限信息。
  3. Shiro会将session放入redis中供其他服务查看。
  4. 当前端请求别的服务时,会通过网关携带sessionId请求其他服务,其他服务再根据会话管理在Redis中查询相对应的Session从而保持会话。

⭐我将设计图贴出:
shrio1