什麼是單點登錄?
單點登錄(Single Sign On),簡稱爲 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
我們目前的系統存在諸多子系統,而這些子系統是分別部署在不同的服務器中,那麼使用傳統方式的session是無法解決的,我們需要使用相關的單點登錄技術來解決。
什麼是CAS
CAS 是 Yale 大學發起的一個開源項目,旨在爲 Web 應用系統提供一種可靠的單點登錄方法,CAS 在 2004 年 12 月正式成爲 JA-SIG 的一個項目。CAS 具有以下特點:
- 開源的企業級單點登錄解決方案。
- CAS Server 爲需要獨立部署的 Web 應用。
- CAS Client 支持非常多的客戶端(這裏指單點登錄系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
下圖是 CAS 最基本的協議過程:
從結構上看,CAS 包含兩個部分: CAS Server 和 CAS Client。CAS Server 需要獨立部署,主要負責對用戶的認證工作;CAS Client 負責處理對客戶端受保護資源的訪問請求,需要登錄時,重定向到 CAS Server。
SSO單點登錄訪問流程主要有以下步驟:
- 訪問服務:SSO客戶端發送請求訪問應用系統提供的服務資源。
- 定向認證:SSO客戶端會重定向用戶請求到SSO服務器。
- 用戶認證:用戶身份認證。
- 發放票據:SSO服務器會產生一個隨機的Service Ticket。
- 驗證票據:SSO服務器驗證票據Service Ticket的合法性,驗證通過後,允許客戶端訪問服務。
- 傳輸用戶信息:SSO服務器驗證票據通過後,傳輸用戶認證結果信息給客戶端。
CAS服務端部署:
環境準備:
CentOS-7-x86_64-Minimal-1908 、apache-maven-3.5.4-bin 、apache-tomcat-8.5.46 、cas-overlay-template-5.1.zip
java version 1.8.0_221
首先解壓cas-overlay-template-5.1.zip 到指定目錄[ -d參數表示安裝到指定目錄下,與tar包不同的是,zip的解壓的目標路徑在前]。
unzip -d /usr/local/software/ cas-overlay-template-5.1.zip
若提示沒有unzip,則通過以下命令安裝unzip
yum install unzip
解壓完成後進入目錄,執行
[root@master cas-5.1]# ./build.sh run
-bash: ./build.sh: Permission denied
[root@master cas-5.1]#
若出現這種情況表明執行權限不夠,我們查看操作權限
發現確實沒有執行權限,加權:
chmod +x build.sh
加權成功,再次運行 ./build.sh run 該過程需要些時間。。。
完成後會在當前目錄下出現一個target目錄,進入該目錄,會發現有個cas.war文件。
複製cas.war文件到Tomcat目錄下的webapps目錄下,然後開啓Tomcat。(因爲我的機器上之前已經開啓一個tomcat7了,而cas5.x版本需要Tomcat8,再次我將Tomcat8的服務端口改爲了8081,在瀏覽器中訪問)
http://192.168.139.100:8081/cas/login
默認用戶名密碼爲:casuser Mellon
CAS服務端配置
首先修改默認登錄賬號和密碼
首先進入到CAS部署的目錄下,依次進入到以下目錄下,
tomcat8-cas/webapps/cas/WEB-INF/classes
打開改目錄下的application.properties文件
修改默認用戶名和密碼
保存退出,重新啓動tomcat
再次試用默認 casuser Mellon登錄後提示認證信息無效
用admin登錄成功
去除https認證
首先繼續在aplication.properties文件匯中加入如下配置
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
其次在進入到 tomcat8-cas/webapps/cas/WEB-INF/classes/services目錄下
編輯HTTPSandIMAPS-10000001.json文件
修改serviceId的內容爲(爲了支持http協議的客戶端,我在裏面加了個http,代表所有URL符合這個正則表達式的服務都會被當成已經註冊的服務)
保存退出,重新啓動tomcat