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.72webappscasWEB-INFclassesapplication.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:historyGitdandiandengluapache-tomcat-8.5.72webappscasWEB-INFclassesservicesHTTPSandIMAPS-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:historyGitdandiandengluapache-tomcat-8.5.72webappscasWEB-INFclasses目录修改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   官网文档说明连接

原文地址:https://www.cnblogs.com/qcq0703/p/15430579.html