基于CAS的单点登录SSO[2]: 改造cas-overlays-template支持MySQL数据库
作者:家辉,日期:2017-08-16 CSDN博客: http://blog.csdn.net/gobitan
摘要:在本系列的第一篇基于CAS的单点登录SSO[1]: 搭建CAS单点登录demo中,搭建了单点登录的服务器端,但是它的用户名和密码是写死存放在数据库中的。显然,这样在大大多数情况下都是不行的,一般都存放在数据库中。本文将介绍如何让CAS支持MySQL存储用户名和密码。
第一步:开启CAS的数据库认证
在pom.xml中加入对jdbc的依赖,参考:
https://apereo.github.io/cas/5.1.x/installation/Database-Authentication.html
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc</artifactId>
<version>${cas.version}</version>
</dependency>
第二步:配置CAS数据库驱动
由于maven官方库
https://mvnrepository.com/artifact/org.apereo.cas/cas-server-support-jdbc-drivers中没有5.1.3版本。如果第一步中没有改,这里需要改一下。需要将pom.xml中的cas.version属性由“5.1.3”改为“5.1.2”. 如下所示:
<cas.version>5.1.2</cas.version>
然后再加入如下依赖:
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc-drivers</artifactId>
<version>${cas.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
第四步:将默认的静态用户名和密码配置注释掉
在application.properties中cas.authn.accept.users设置为空:
cas.authn.accept.users=
第五步:创建SSO测试数据库
注意:这里仅仅是测试,包括密码都用的是明文,实际生产环境不可如此。
创建数据库及表的SQL脚本语句如下:
create database sso default charset utf8 collate utf8_general_ci;
use sso;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `users` VALUES (1,'dennis','123456'),(2,'test','123456');
执行以上SQL创建好测试数据库。
第六步:配置数据库认证信息
在application.properties中增加mysql的配置,参考:
https://apereo.github.io/cas/development/installation/Configuration-Properties.html#database-authentication
cas.authn.jdbc.query[0].sql=SELECT * FROM USERS WHERE username=?
cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/sso?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=123456
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
cas.authn.jdbc.query[0].fieldPassword=password
注意:这里数据库安装在本机且root密码为123456。
第七步:运行cas server并验证测试账号
sudo ./build.sh
参考资料: