前言
1.單點登錄(Single Sign On),簡稱為 SSO,是比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
CAS下載安裝
1.CAS是Central Authentication Service的縮寫,中央認證服務,一種獨立開放指令協議。CAS 是 耶魯大學(Yale University)發起的一個開源項目,旨在為 Web 應用系統提供一種可靠的單點登錄方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個項目。
2.github下載地址 https://repo1.maven.org/maven2/org/apereo/cas/cas-server-webapp-tomcat/5.3.14/ 下載如下圖所示5.3.14.war文件
生成秘鑰庫
1.我們採用jdk自帶的keytool工具生成秘鑰庫,別名casbm,生成的秘鑰存儲路徑為D:\cas\keystore
2.打開cmd窗口執行以下命令,命令如下:
keytool -genkey -v -alias casbm -keyalg RSA -keystore D:\cas\keystore\casbm.keystore
秘鑰口令隨便輸入,我這裡輸入123456
這裡我們要輸入一些問題的答案,我們可以隨便輸入,例如我輸入的
然後這裡問我們是否確認為這些信息,我們這裡確認輸入y
這裡按下回車,可以看到命令成功結束,這時我們看一下路徑下有沒有生成秘鑰
我們可以看到已經生成了秘鑰
從秘鑰庫中導出證書
1.我們生成秘鑰庫後需要從秘鑰庫中導出證書,打開cmd窗口,命令如下:
keytool -export -trustcacerts -alias casbm -File D:/cas/keystore/casbm.cer -keystore D:/cas/keystore/casbm.keystore
這時讓我們輸入密碼,我上面設置的為123456,這裡我就輸入123456,如下圖所示導出成功
將證書導入到JDK證書庫
1.我們從秘鑰庫導出證書後需要將證書導入到JDK證書庫中,打開cmd窗口,命令如下,其中最後的路徑為你本地jdk的路徑,要確保該路徑正確:
keytool -import -trustcacerts -alias casbm -file D:/cas/keystore/casbm.cer -keystore 「D:/Configure/java/java8/jre/lib/security/cacerts」
這個時候提示我們輸入密碼,這個密碼不是我們上面設置的密碼,而是固定的密碼: changeit
這個時候提示我們是否信任此證書,我們輸入:y
配置tomcat支持https
1.由於cas需要https協議訪問,所以我們要配置tomcat也支持https協議,我們找到我們的tomcat的server.xml文件,加入如下配置:
<Connector port=「8443」 Protocol=「org.apache.coyote.http11.Http11NioProtocol」
maxThreads=「150」 SSLEnabled=「true」 scheme=「https」 secure=「true」
clientAuth=「false」 sslProtocol=「TLS」 keystoreFile=「D:\cas\keystore\casbm.keystore」 keystorePass=「123456」/>
將下載的CAS包放入tomcat中啟動
1.我們將之前下載的cas包放入tomcat中啟動,首先將war包放入tomcat的webapps下
2.這裡我們為了方便訪問,我們將war包改名為cas
3.這裡我們啟動tomcat,找到tomcat中bin下的startup.bat文件雙擊啟動。
4.啟動完成後我們訪問登錄頁面驗證是否啟動成功,訪問地址如下,用戶名為:casuser 密碼為:Mellon:
https://localhost:8443/cas
5.用戶名密碼是在如下配置文件中指定的
配置CAS日誌地址
1.這個時候我們為了方便日後排查問題,我們需要將cas的日誌修改為我們指定的地址,找到如下配置文件
配置用戶名密碼為資料庫中的真實用戶名密碼
1.上面我們的用戶名密碼是寫死的,但是實際開發中我們的用戶名密碼是存儲在資料庫中的,這個時候需要我們從資料庫中讀取,我們打開application.properties文件,添加如下配置
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas?serverTimezone=GMT
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=root
cas.authn.jdbc.query[0].sql=select * from user where username = ?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
將所需要的驅動jar包放入cas項目中
1.我們需要將所需要的jar包放入cas項目的lib中,jar包名稱如下,可以去maven倉庫中搜索
cas-server-support-jdbc-5.3.1.jar
cas-server-support-jdbc-drivers-5.3.1.jar
cas-server-support-jdbc-authentication-5.3.1.jar
connector-java-5.1.34_1.jar
2.此時我們重新啟動tomcat,使用資料庫中的用戶名密碼登錄
設置密碼加密
1.我們到此已經可以使用資料庫的用戶名密碼來登錄cas了,但是明文的密碼並不安全,現在我們需要配置一下加密。還是找到application.properties文件,添加如下代碼
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#MD5加密策略
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
2.此時已經配置好加密了,我們可以測試一下,將123456加密,然後將密碼改為加密後的,此時重啟tomcat再用123456登錄。