springboot前后端分离接入cas技术方案及实现(一)

  • 概述

    之前也做过好几个系统的sso接入,都是基于ssm架构的项目,而且没有做前后端分离,接入相对简单,最近有一个基于springboot+shiro+jwt的前后端分离项目需要接入sso平台,大体过程是知道的,但是具体技术实现没有头绪,网上相关的资料也比较少,而且很粗略,经过几天的研究,踩了许多的地雷,终于完成了sso接入,现在就把完整的方案分享一下和具体实现以及源码都分享一下。

  • 目标
  1. 实现知识管理平台的单点登陆接入。
  2. 能够通过统一身份认证平台进行登录登出操作。
  • 接入方案

因为项目采用shiro+jwt的认证方式, shiro 官方在 1.2 中就表明已经弃用了 CasFilter,故引入 pac4j 来做单点登录的控制, pac4j支持对shiro的调用。重写ShiroConfig整合cas权限认证,通过pac4j实现cas的跳转。

具体分析如下:

  1. 当用户第一次登录应用系统时,过滤器会拦截,携带回跳的项目地址重定向到sso统一认证平台:

      eg:http://127.0.0.1:8085/cas/login?service=http//127.0.0.1:8081/index

     2.登陆成功后sso会生成一个ticket一并返回给应用系统,作为系统的认证凭据,然后跳回系统:

      http//127.0.0.1:8081/index?ticket=*******

     3..拦截到请求,通过解析拿到对应的登陆成功的用户名,根据用户名去查找对应的角色权限,再用jwt生成token,携带登陆成功所需要的数据重定向到前端页面,完成登录成功操作。

  •      4.登出操作时,会并销毁token信息,重定向到sso统一认证平台。

springboot前后端分离接入cas技术方案及实现(一)_第1张图片

  • 相关接口
  1. 登录接口(login)
  2. 登出接口(logout)

 

    具体代码实现请看:springboot前后端分离接入cas技术方案及实现(二)

你可能感兴趣的:(sso)