CAS5.2x單點登錄(一)——搭建cas服務器
系列文章列表:
https://blog.csdn.net/u013825231/article/category/7517313
單點登錄的介紹
單點登錄(Single Sign On ,簡稱SSO)是目前比較流行的服務於企業業務整合的解決方案之一,SSO 使得在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
CAS(Central Authentication Service)是 Yale大學發起的一個企業級的、開源的項目,旨在為 Web 應用系統提供一種可靠的單點登錄解決方法。
在5.0版本之前,cas使用的是ssh的那套框架來搞的,網上關於使用xml來配置的資料也是很多。前端也是使用jsp來弄的。所有的東西(連接數據庫,自定義加密等等)一系列的東西都是通過寫代碼,然後在deployerConfigContext.xml裏面進行bean的註入,這些我就不講了,我主要講的就圍繞著5.0版本之後來講吧,5.0版本之後的最大改變就是引入了現在比較流行的微服務架構也就是spring
boot這套,他將之前使用bean註入的換成了spring
boot的配置來弄了,以及增加了容器(docker)。網上對於5.0後的內容也是少之又少,因為最近公司讓我做這塊,然後研究了一陣子,將自己遇到的坑以及怎麽一步步的完成設計的過程分享給大家。
工具
jdk1.8u171
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
tomcat 8.5 (註意要使用tomcat8版本以上的)
https://tomcat.apache.org/download-80.cgi#8.5.31
cas-overlay-template-5.2.1
為什麽要使用cas-overlay呢?剛開始我也是不知道找哪個,下載了主版本,但是發現他是用gradle編譯的,習慣maven編譯的我想想是有多痛苦,但是沒辦法就裝了個ide,本以為裝了後就能編譯,後來發現要編譯這麽多模塊,但是好多模塊是我們不需要的,還有我們下載下來的每個模塊都是有源碼的。難道我們要改源碼來完成cas的設計嗎。還好看了cas的官方說明文檔,這裏可以自己去github上面看。發現官方提供了一個無侵入式的一套來設計cas,所謂的無侵入式就是你直接打成war包,放到tomcat裏面運行,你能運行,你也可以自己建立相應的文件,cas這套他能將你的覆蓋掉他原有的(名字路徑相同)。通過這樣來達到改變代碼以及其他東西來完成cas服務器的搭建。好了,廢話不多說。先來搭建一波簡單的cas服務器,也就是github下載下來的直接放到tomcat來運行的。
keytool是JDK的一個命令,所以,jdk的目錄必須在path中,就需要:
- 使用第一個命令:
keytool -genkey -alias cas -keyalg RSA -validity 999 -keystore d:/thekeystore
會出現如圖界面,這時候會在d盤生成thekeystore文件。 - 繼續下一個命令:
keytool -export -file d:/cas.crt -keystore d:/thekeystore -alias cas
- 最後將證書導入到jre中:
keytool -import -file d:/cas.crt -alias cas -keystore "C:\Program Files\Java\jre1.8.0_171\lib\security\cacerts" -storepass changeit,記住要加上jdk的默認密碼,也就是
-storepass changeit,這時候會出現下圖所示, - 這個過程千萬要註意你的路徑是否存在空格,這個將導致問題的出現。到這裏就完成了證書的生成了,現在就可以繼續下一步了。
- 記住證書生成後記得要修改host文件,因為我們是自己生成的證書。修改host文件其實就是將本地的ip對應到你剛才輸入的域名,也就是test.test.com, 修改C:\Windows\System32\drivers\etc\hosts ,添加 127.0.0.1 test.test.com
下載cas-overlay
進入這個鏈接去選擇自己想下載的版本,我這邊以5.2,也就是master
https://github.com/apereo/cas-overlay-template/tree/5.2
下載好以後,打開看以後應該是這樣的目錄結構,我們可以直接在裏面打開命令行(cmd)運行mvn
clean
package來進行編譯,因為我們這個編譯出來的是war包,等pom的jar包下載完後以及編譯成功後就會多出一個target文件夾,裏面有cas的內容,我們只需要將cas.war(或者直接將cas的文件夾放到tomcat的webapp並啟動tomcat)這時候我們訪問test.test.com:8080/cas/login就能看到如下的頁面,這時候基本的就完成了,這時候就有人問那前面生成的證書也沒什麽用啊,沒錯,我們現在的確是沒有用到證書,所以這上面不是有兩個提醒嗎,第一個就是因為我們使用的是http而不是https,所以我們要去配置tomcat。找到tomcat裏面的conf中的server.xml將
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
改成下面的
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8080" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="d:\thekeystore" keystorePass="666666" clientAuth="false" sslProtocol="TLS"/>
,這時候重新啟動tomcat,然後繼續按剛才的去訪問,發現找不到,因為我們之前使用的是http,現在換成https了,你只要加入https就可以出現這個畫面:
,這時候我們明顯發現那個no-security的提醒已經沒有了,cas要求是以域名來訪問的(之後整合客戶端的時候會講到)。
剩下的我們就是登錄進去,默認的用戶名和密碼是casuser:Mellon,登錄進去就是這個頁面。
好了,今天的就到這兒把,下次繼續將如何使用動態的數據庫以及自定義登錄驗證還有restful請求都寫一下
CAS5.2x單點登錄(一)——搭建cas服務器