原创

springboot-shiro集成cas实现单点登陆

项目地址: 码云

开局先来一张单点登陆的说明图片,看懂了这张图片,再继续下面内容。要不你连原理都不懂,怎么去做这个单点登陆呢,

file
上面的这张图片已经很清楚说明了单点登陆的流程,需要多看几遍才能理解。
问题:当用户在系统一登陆后,访问系统二时,是怎样验证已登陆的?
我们注意到,用户在登陆系统一个时候cas-server创建了一个全局会话,而这个会话是直接和用户浏览器进行关联的,当用户访问系统二时,会发现这个浏览器的用户已经在系统一登陆过了,一次就验证成了已登录状态。
退出的实现:cas客户端会把每个注册过的系统保存起来,在退出时会逐个退出系统。

问题:SSO系统登录后,跳回原业务系统时,带了个参数ST,业务系统还要拿ST再次访问SSO进行验证,觉得这个步骤有点多余。他想SSO登录认证通过后,通过回调地址将用户信息返回给原业务系统,原业务系统直接设置登录状态,这样流程简单,也完成了登录,不是很好吗?

其实这样问题时很严重的,如果我在SSO没有登录,而是直接在浏览器中敲入回调的地址,并带上伪造的用户信息,是不是业务系统也认为登录了呢?这是很可怕的。

cas-spring-boot-demo

介绍

springboot shiro整合cas单点登陆,修改登陆样式。

软件架构

软件架构说明 jdk 1.8 maven项目
cas-server cas服务端
springboot-cas-shiro-master 客户端一
springboot-cas-shiro-master2 客户端二

安装教程

1.使用git clone xxx 将项目down下来,然后用eclpse或者idea打开此处以idea为例 选择 open,打开目录

  1. 一共三个项目,鼠标选中项目的pom文件,右键->add as maven project,一共操作三次。

使用说明

  1. cas服务端
    首先将cas-server\src\main\webapp\WEB-INF\lib,里面的包全部选中,右键 add as libery,使用tomcat7:run进行运行,默认是8080端口
    ,如果提示包找不到,按照以下操作,右键该项目tomcat7:run->rebulid module ‘cas-server’->tomcat7:run即可正常启动,或者配置外部tomcat也行,一定要把lib下jar给导入进去。
  2. springboot-cas-shiro-master/springboot-cas-shiro-master2直接运行主方法即可,因为是springboot项目,分别是8081和8082端口.
    sql,如下:
    新建数据库test 找到如下文件
    cas-server\src\main\webapp\WEB-INF\deployerConfigContext.xml拉到最下面配置数据库信息,
    数据表,建表语句
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `account` varchar(255) DEFAULT NULL,
  `status` varchar(255) DEFAULT NULL,
  `created` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

插入一条新记录

INSERT INTO `test`.`user` (`id`, `username`, `password`, `account`, `status`, `created`) VALUES ('1', 'root', '63a9f0ea7bb98050796b649e85481845', NULL, NULL, '2019-04-28 11:23:46');

登陆账号和密码root/root
然后自己体验吧!!

正文到此结束(点击广告是对作者最大的支持)