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   官網文檔說明連接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM