前期准備:
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 官網文檔說明連接