之前也做过好几个系统的sso接入,都是基于ssm架构的项目,而且没有做前后端分离,接入相对简单,最近有一个基于springboot+shiro+jwt的前后端分离项目需要接入sso平台,大体过程是知道的,但是具体技术实现没有头绪,网上相关的资料也比较少,而且很粗略,经过几天的研究,踩了许多的地雷,终于完成了sso接入,现在就把完整的方案分享一下和具体实现以及源码都分享一下。
- 实现知识管理平台的单点登陆接入。
- 能够通过统一身份认证平台进行登录登出操作。
因为项目采用shiro+jwt的认证方式, shiro 官方在 1.2 中就表明已经弃用了 CasFilter,故引入 pac4j 来做单点登录的控制, pac4j支持对shiro的调用。重写ShiroConfig整合cas权限认证,通过pac4j实现cas的跳转。
具体分析如下:
- 当用户第一次登录应用系统时,过滤器会拦截,携带回跳的项目地址重定向到sso统一认证平台: