Spring Security & Session实现企业级用户登录及权限控制
1.需求背景
OCP与ODC部署到内部与外部需要具有成熟的用户管理系统,内部需要接入buc用户体系,外部输出需要对接金融云和阿里云三方登录解决方案。原有的OCP1.0系统中用户管理模块是自己实现的,用户信息从Browser传递到Server过程中明文暴露,Cookie或Session泄露容易发生CSRF。1.0系统中权限管理比较混乱,一个角色多达十几个权限,权限系统由前端来控制,不能实现API级别的精确权限控制。
Spring Framework4.x开始提供对Spring Securiy支持,这是一个基于Spring AOP和Servlet过滤器的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权。
Spring Session是分布式Session的解决方案,在单点式应用中,Session是由tomcat管理的,存在于tomcat的内存中,当我们为了解决分布式场景中的Session共享问题时,引入了redis,其共享内存,以及支持key自动过期的特性,非常契合Session的特性,我们在企业开发中最常用的也就是这种模式。Spring Session通过AOP的方式,将HttpSession持久化到Redis或MySql中,实现分布式部署时对Session的共享。
本文解决的目标:
- Spring Security对接Buc、金融云三方登录
- Spring Security实现对已登录的用户进行权限管理
- Spring Session共享Session,解决分布式部署“单点”登录