您的位置:首页 > 数据库 > MySQL

基于CAS的单点登录SSO[2]: 改造cas-overlays-template支持MySQL数据库

2017-08-28 22:48 477 查看
基于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数据库驱动
参考:https://apereo.github.io/cas/5.1.x/installation/JDBC-Drivers.html
由于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>


第三步:配置MySQL连接依赖
<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

访问https://cas.example.org:8443/cas/login,并输入数据库中的测试账户dennis或者test,密码都为123456。验证可以登录成功。

参考资料:
[1] https://apereo.github.io/cas/5.1.x/index.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cas sso mysql