springboot-shiro集成cas实现单点登陆
项目地址: 码云
开局先来一张单点登陆的说明图片,看懂了这张图片,再继续下面内容。要不你连原理都不懂,怎么去做这个单点登陆呢,
上面的这张图片已经很清楚说明了单点登陆的流程,需要多看几遍才能理解。问题
:当用户在系统一登陆后,访问系统二时,是怎样验证已登陆的?
我们注意到,用户在登陆系统一个时候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,打开目录
- 一共三个项目,鼠标选中项目的pom文件,右键->add as maven project,一共操作三次。
使用说明
- 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给导入进去。 - 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
然后自己体验吧!!
正文到此结束(点击广告是对作者最大的支持)
- 本文标签: SSO SpringBoot
- 版权声明: 本站原创文章,于2019年04月29日由好好网发布,转载请注明出处