CAS5.3版本单点登录服务器(支持http协议)的搭建以及连接数据库的设置
前期准备:
CAS5.3:https://github.com/apereo/cas-overlay-template/tree/5.3
选择Download ZIP,下载压缩包文件,也可以找到war包直接下载
tomcat8:https://tomcat.apache.org/download-80.cgi
选择8.5.72即可
JDK:版本1.8
本文内容的所有文件都在网盘链接中。
链接:https://pan.baidu.com/s/1_c_cpiwfS4JCxEWILr1XBg
提取码:1234
网盘中tomcat的cas文件夹,所需要的jar包以及所需要设置的属性均已设置完毕,直接运行即可使用,以下内容只是记录过程。(将apache-tomcat-8.5.72\webapps\cas\WEB-INF\classes\application.properties配置文件中数据库和sql语句改成你自己的,再检查一下其他属性,我这个tomcat中的CAS是支持http协议的,如果需要使用https协议,那么就在文章末尾找到关于https协议需要设置的步骤,那篇文章介绍的很详细)
在搭建cas服务器时,一定要考虑清楚使用的是什么协议,cas默认是支持https,并且官方也建议使用https协议的,如果想要支持http,那么就需要进行设置了,文章中有介绍。
解压
CAS压缩包解压,进入解压的文件
打包
在文件夹中使用maven命令,进行打包
mvn clean package
注意:这里会比较慢,需要耐心等待。
执行这个步骤的目的是生产一个cas.war包, 可以放到tomcat中运行。经过长时间的等待终于编译成功,在目录下生成一个target目录,在这里会有一个war包,此war包可以放到tomcat工程里面
将cas.war包放在下载好的tomcat的webapps文件中。
然后运行,tomcat会自动将war包解压,运行完可能会报错,也可能不会,不管会不会吧,关掉tomcat开始修改配置文件。
修改配置文件,支持http协议
在这个目录:E:\historyGit\dandiandenglu\apache-tomcat-8.5.72\webapps\cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json
找到serviceId这一行修改为以下代码(重点啊,一定是tomcat中通过war包解压后的文件),为serviceId添加http协议头:
{ "@class" : "org.apereo.cas.services.RegexRegisteredService", "serviceId" : "^(https|imaps)://.*", "name" : "HTTPS and IMAPS", "id" : 10000001, "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.", "evaluationOrder" : 10000 }
最终结果为:
{ "@class" : "org.apereo.cas.services.RegexRegisteredService", "serviceId" : "^(https|http|imaps)://.*" "name" : "HTTPS and IMAPS", "id" : 10000001, "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.", "evaluationOrder" : 10000 }
原因是:CAS 5.x 默认情况下不支持HTTP的客户端接入,建议客户端采用HTTPS协议。可以通过以上操作把CAS Server开启支持HTTP的客户端接入。
启用记载JSON配置文件,在这个E:\historyGit\dandiandenglu\apache-tomcat-8.5.72\webapps\cas\WEB-INF\classes目录修改application.properties文件,添加以下代码:
#忽略https安全协议,使用 HTTP 协议
cas.tgc.secure=false #是否开启json识别功能,默认为false
cas.serviceRegistry.initFromJson=true
如果没有正常修改配置文件,就会出现以下现象
对了,CAS默认的登录名和密码也在application.properties这个文件里,如下:
##
# CAS Authentication Credentials
#
cas.authn.accept.users=casuser::Mellon
用户名是,casuser,密码是:Mellon
重启Tomcat
到这里就可以重启tomcat,正常启动如下。
浏览器访问链接:http://cas.example.org:8443/cas
登录后即可看到
连接MySQL数据库
以上内容主要是使用配置文件中已经设置好的用户名和密码,进行测试登录的,接下来是连接数据库的操作。
在application.properties这个文件最下边添加如下代码内容(注意了需要将之前默认密码的casuser那一行注释掉):
#你自己的数据库 cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai #数据库的登录用户名 cas.authn.jdbc.query[0].user=root #数据库的登录密码 cas.authn.jdbc.query[0].password=root #查询的表和条件的sql cas.authn.jdbc.query[0].sql=select * from sys_user where username=? #密码在表中对应的字段 cas.authn.jdbc.query[0].fieldPassword=password cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver # 默认加密策略,通过encodingAlgorithm来指定算法,默认NONE不加密 如果你的系统是加密的 那么就必须配置以下内容 不然无法登陆 # NONE|DEFAULT|STANDARD|BCRYPT|SCRYPT|PBKDF2 #cas.authn.jdbc.query[0].passwordEncoder.type=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= # 加密盐 #cas.authn.jdbc.query[0].passwordEncoder.secret=63293188 # 加密字符长度 #cas.authn.jdbc.query[0].passwordEncoder.strength=16
然后需要下载几个jar包,在文首网盘链接中下载即可,如下图:
重点注意
敲黑板了!!!建议,先自己建一个数据库,或者在已有数据库建一张新的用户表,进行测试,如果正常登陆则代表设置没有问题。
接下来就可以再测试密码加密的场景了,代码中已经注释掉了,直接打开注释修改对应的加密属性即可。当提示认证不通过时,请认真检查你的加密属性,检查是哪里出错了,不要怀疑其他地方。
我在这里掉进了大坑,没有进行第一步不加密场景,直接使用加密的场景了,结果由于不太熟悉,属性没有设置正确,导致无法正常登陆,相当苦恼啊,怀疑过cas版本,怀疑过mysl连接jar包版本,怀疑过是不是缺少什么属性,各种尝试,各种csa版本,各种mysql连接jar包版本,几乎都开始怀疑人生了,关键是日志还不报错,这就很难受了,最终抱着试一试的态度,先用不加密的,我擦嘞,直接登录成功,这下就确定了,就是加密属性这一块没有设置成功,这不就好办了,找到项目里添加用户时,密码的加密算法,进行相应的属性设置即可。
参考链接:
https://blog.csdn.net/csolo/article/details/95088471 此链接教程是设置https协议的,但是按照这个教程设置完毕,会出现异常,所以最终使用了http协议
https://blog.csdn.net/xuelang1478/article/details/90406168 此链接解决了未找到服务的异常
https://repo1.maven.org/maven2/org/apereo/cas/ 额外需要下载cas所需jar包的链接,主要针对链接数据库用户时使用
https://www.cnblogs.com/gg128/p/9897918.html 此链接是设置https并且生成证书的教程,以及Keytool命令的详解
https://blog.csdn.net/zlfing/article/details/77648430 生成证书时,使用的Keytool命令详解
https://blog.csdn.net/qq_21190847/article/details/105257474?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.no_search_link cas链接数据库用户的设置
https://blog.csdn.net/a350301941/article/details/90148765 tomcat启动时,日志输出中文乱码解决方案
https://www.cnblogs.com/zhangyongli2011/p/15166171.html 链接数据库时的设置连接
https://apereo.github.io/cas/6.4.x/index.html 官网文档说明连接