代码地址,分别下载6.2和6.4两个版本
https://github.com/apereo/cas-overlay-template
版本地址:
https://github.com/apereo/cas-overlay-template/tree/6.2 -- 6.2版本
https://github.com/apereo/cas-overlay-template/tree/6.4 -- 6.4版本
JAVA版本:11
两者的部署还是有些区别的
6.4的部署参考了6.2的部署,6.2的部署可以参考:
记录CAS6.1X Server 部署加Mysql数据源整合详细_嘻哈的博客-CSDN博客
使用cas-overlay-template 6.2服务部署到整合cas-client_爱学习的老王的博客-CSDN博客
6.2的构建步骤:
- 第一次先构建出war。
- 从构建出来的war解压出源码,目录为:build/cas-resources。
- 将源码build/cas-resources复制到src/main目录下,改名为resources。
- 把etc/cas/thekeystore文件拷贝到resources目录下。(SSL方式启动需要一个证书)
- 修改resources下的application.properties 配置文件。
- 将修改好的源码重新打包,运行。
进入下载好的代码目录:(6.2版本的构建命令都在这个目录中执行)
> cd ./cas-overlay-template-6.2
第一次构建出war:
> gradlew.bat clean build # linux 换为 ./gradlew clean build
构建完成后,执行命令进行解压
> gradlew.bat explodeWar
复制build/cas-resources => src/main/resources
复制etc/cas/thekeystore => src/main/resources/thekeystore
修改文件:src/main/resources/application.properties
修改如下配置:
server.ssl.key-store=file:/etc/cas/thekeystore
改为
server.ssl.key-store=classpath:thekeystore
再次构建项目
> gradlew.bat build
解压(这步可能是不必要的)
> gradlew.bat explodeWar
启动项目
> gradlew.bat run
启动完成后浏览器中打开 https://localhost:8443/cas/login
在登录页面输入默认的静态用户名:casuser 密码:Mellon
6.2中引入MySQL数据库,支持帐号登录
步骤:
- 添加MySQL依赖。
- application.properties配置文件加入数据库连接配置。
- 数据库中建表,并添加帐号记录。
- 构建,解压,运行。
添加MySQL依赖
编辑文件:cas-overlay-template-6.2/build.gradle, dependencies 节点下加入驱动下载配置
dependencies {
// Other CAS dependencies/modules may be listed here...
// implementation "org.apereo.cas:cas-server-support-json-service-registry:${casServerVersion}"
// 以下三行是新添加的
compile "org.apereo.cas:cas-server-support-jdbc:${casServerVersion}"
compile "org.apereo.cas:cas-server-support-jdbc-drivers:${casServerVersion}"
compile "mysql:mysql-connector-java:8.0.15" // 注意自己的mysql版本
}
src/main/resources文件下的 application.properties配置文件加入数据库连接配置
#取消静态配置
#cas.authn.accept.users=casuser::Mellon
#cas.authn.accept.name=Static Credentials
#以下为本地的数据库配置信息
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/apereo_cas?serverTimezone=UTC&allowMultiQueries=true
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=123456
cas.authn.jdbc.query[0].sql=select password from cas_users where username= ?
cas.authn.jdbc.query[0].fieldPassword=password # 这个值password,是数据表保存密码的字段名
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5 # 密码的加密方式为MD5
数据库中建表,并添加帐号记录
表结构可以随便建,在配置里对应好就可以用。
CREATE TABLE `cas_users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
INSERT INTO `apereo_cas`.`cas_users` (`username`, `password`) VALUES ('aaa', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `apereo_cas`.`cas_users` (`username`, `password`) VALUES ('bbb', 'e10adc3949ba59abbe56e057f20f883e');
密码为:123456
由于配置文件有使用MD5加密,这里数据库密码字段是存储的MD5加密后的数据,随便找一个MD5加密网站(https://md5jiami.51240.com/),把32位小写的加密密码存在数据库。
构建,解压,运行
> gradlew.bat build
> gradlew.bat explodeWar
> gradlew.bat run
浏览器输入地址:https://localhost:8443/cas/login
输入帐号:aaa 密码:123456
war方式启动
上一步测试后停止运行(ctrl+c)
进入到目录:build/libs。
执行:
java -jar cas.war
小贴士:
查看SQL在MySQL中是否已执行:
打开MySQL的SQL执行日志
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON'; -- 要关闭改为OFF
查询执行的SQL:
SELECT *, CAST(argument AS CHAR(10000) CHARACTER SET utf8) from mysql.general_log
where command_type='Query' -- 只查询类型是Query的记录
ORDER BY event_time DESC;
-- truncate table mysql.general_log; -- 用于清理日志
6.4的构建步骤:(相对来说步骤要简单一些)
- 生成SSL要用的证书。
- 修改配置,并生效。
- 修改build.gradle,以支持MySQL。
- 构建,运行。
生成SSL要用的证书
配置好了JAVA_HOME,在任意目录都可以执行以下命令:
> keytool -genkey -v -keyalg RSA -alias cascer2 -keystore cascer2.jks -storepass 456789 -validity 10000
-storepass 指定证书的口令为:456789(最少6位),CAS默认的口令是:changeit
除第6步询问是否确认时输入:y,其它步骤都可以直接回车。
进入下载好的代码目录:(6.4版本的构建命令都在这个目录中执行)
> cd ./cas-overlay-template-6.4
修改配置,并生效
编辑文件:etc/cas/config/cas.properties
添加以下配置:
# cas.authn.accept.enabled=false
#server.port=8445 # 访问端口号,不影响cas.server.name的配置
server.ssl.key-store=file:C:\\Users\\nece001\\Desktop\\cascer2.jks # 证书位置
server.ssl.key-store-password=456789 #证书口令,如果用默认的changeit,可以不要这一项
server.ssl.key-password=456789 #证书口令,如果用默认的changeit,可以不要这一项
##Query Database Authentication 数据库查询校验用户名开始--------------------
##查询账号密码sql,必须包含密码字段(**重点要填自己的数据库的表名记得要改**)
cas.authn.jdbc.query[0].sql=select * from `cas_users` where `username`=?
##指定上面的sql查询字段名(必须!!!!**自己密码的字段记得要改**)
cas.authn.jdbc.query[0].fieldPassword=password
##指定过期字段,1为过期,若过期不可用
#cas.authn.jdbc.query[0].fieldExpired=expired
##为不可用字段段,1为不可用,需要修改密码
#cas.authn.jdbc.query[0].fieldDisabled=disabled
##数据库方言hibernate的
##cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.Oracle10gDialect
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQL5InnoDBDialect
##数据库驱动
##cas.authn.jdbc.query[0].driverClass=oracle.jdbc.driver.OracleDriver
cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver
###数据库连接
cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/apereo_cas?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=UTC& allowPublicKeyRetrieval=true
###数据库用户名
cas.authn.jdbc.query[0].user=root
###数据库密码
cas.authn.jdbc.query[0].password=123456
###默认加密策略,通过encodingAlgorithm来指定算法,默认NONE不加密
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
##Query Database Authentication 数据库查询校验用户名结束
生效!!
保存后执行:./gradlew copyCasConfiguration
如果是windows,执行这句后会在代码所在盘的根目录产生一个etc目录,这个目录就是生效的配置目录,如:d:\etc\cas。如果需要修改配置可以直接修改这里的,不需要再执行生效命令。
如果是linux,就是目录/etc/cas。
修改build.gradle,以支持MySQL
dependencies {
/**
* CAS dependencies and modules may be listed here.
*
* There is no need to specify the version number for each dependency
* since versions are all resolved and controlled by the dependency management
* plugin via the CAS bom.
**/
......
# 修改下引入的格式
// https://mvnrepository.com/artifact/org.apereo.cas/cas-server-support-jdbc
//implementation group: 'org.apereo.cas', name: 'cas-server-support-jdbc', version: '6.4.2'
implementation "org.apereo.cas:cas-server-support-jdbc:${project.'cas.version'}"
// https://mvnrepository.com/artifact/org.apereo.cas/cas-server-support-jdbc-drivers
//runtimeOnly group: 'org.apereo.cas', name: 'cas-server-support-jdbc-drivers', version: '6.4.2'
implementation "org.apereo.cas:cas-server-support-jdbc-drivers:${project.'cas.version'}"
implementation "mysql:mysql-connector-java:8.0.15"
......
}
构建,运行
> gradlew.bat clean build
> gradlew.bat run