30700cb9c19a0efbd15dd15402a4498a.png

前言

上一篇文章介绍了 cas 环境搭建过程

本文介绍下cas和shiro集成代码实现及数据流转过程简介

先看下实现的效果

1
2
3
访问 http://localhost:8086/demo1

转发到认证中

4ca24329401dd42e7d712c2033ebfa56.png

1
2
3
输入登陆账号

回到demo1页面

20e5e6f1617348e8b96579664d76ff00.png

1
2
3
再次访问 http://localhost:8086/demo1 直接会跳转到 demo1页面

点击退出

7edcd52284001e9410484758e9face92.png

项目启动[按照运行顺序]

33c9662958e09dbb30bf922ff8bbf48f.png

实例化 LifecycleBeanPostProcessor bean生命周期管理类

7a949df67a785d7a496dc35fa748821c.png

e554f7c197d05bf3f6e6b4f1dd3d8ae3.png

1
使用 pac4j  subjectFactory

3ddbf12272ae1c93af0130bb1bb71a85.png

f4143327ee8c3d466f07392db9081e2c.png

0cc018dd36f2a4263f1b0b5a790b3db7.png

f99db0d9e61c936a23e4bd395c09b501.png

0ba54d9ee618c4302ae2d22490ca02ca.png

初始化 securityManager 并设置 sessionManager subjectFacotry和CasRealm

83f34777664bce0b8ceac068ba147f98.png

1dc42eaa537764266734d1305a348e7b.png

3358aee194fcf4f4c0ab64ea8d483831.png

62ce43e8299b81ecf1030a3b765a77de.png

1
设置pac4j配置 并设置 cas 客户端和sessionshiro存储

f083e6b1f56dd5e373fcd07c8ac7fed9.png

963ebdd2a399d019a2c3ecb4474ac045.png

872645ca977ef1485d6236398e4c6009.png

初始化 AuthorizationAttributeSourceAdvisor 并设置 securityManager

40aa2f227cadc788ee18326867de68b5.png

访问过程数据流转[按照运行顺序]

1
访问 http://localhost:8086/demo1

7e330e684db7213bf23bd2dee994b79b.png

获取重定向处理的action

然后跳转到了认证中心的页面

bc17e3b6d517a8bb20762e1c16e79214.png

13afe19b7678b866f114e995d22cd871.png

1
2
3
输入登陆账号

登陆成功会回调到demo1项目

e099897cab280c6a106c3fbca3fb463e.png

1
2
3
解析认证中心返回的信息

然后返回到demo1的首页

c675736a802dbe93a2bf058746fe1643.png

1
2
3
4
5
6
7
点击退出

查看demo1的日志

o.p.cas.logout.DefaultCasLogoutHandler : No trackable session found for back channel logout. Either the session store does not support to track session or it has expired from the store and the store settings must be updated (expired data)

调用了 casLogout的Handler处理类

176b275faba660eecc856199ab9dd6eb.png

代码资源

1
https://gitee.com/pingfanrenbiji/cas-shiro-springboot-demo.git