單點登錄CAS學習(一):初識單點登錄

一、單點登錄應用場景

不少業主單位隨着自身的發展,建立不少業務支撐系統,往往會採用不同的開發商進行系統開發和建設,因此必然形成如下一種局面:工作人員需要登錄多個業務系統才能將自己的工作全部完成,給工作人員帶來了額外的負擔。

因此單點登錄變應運而生了,它解決了多個系統都要登陸的問題,只需要打開一個系統時,進行登錄(單點登錄),就可以自由切換其他的系統。

二、單點登錄的框架

         目前廣泛使用的單點登錄框架是CAS框架,CAS是SSO解決方案裏面比較成熟的架構,是耶魯大學發起的一個開源架構,其旨在爲 Web 應用系統提供一種可靠的單點登錄方法,CAS 在 2004 年 12 月正式成爲 JA-SIG 的一個項目。CAS 具有以下特點:

  1. 開源的企業級單點登錄解決方案。
  2. CAS Server 爲需要獨立部署的 Web 應用。
  3. CAS Client 支持非常多的客戶端(這裏指單點登錄系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

下圖是 CAS 最基本的協議過程:

 

CAS協議過程

  1. 訪問服務:SSO客戶端發送請求訪問應用系統提供的服務資源。
  2. 重定向認證:SSO客戶端會重定向用戶請求到SSO服務器。
  3. 用戶驗證:用戶身份認證。
  4. 生成票據:SSO服務器會產生一個隨機的Service Ticket。
  5. 驗證票據:SSO服務器驗證票據Service Ticket的合法性,驗證通過後,允許客戶端訪問服務。
  6. 傳輸用戶信息:SSO服務器驗證票據通過後,傳輸用戶認證結果信息給客戶端。

 

三、學習實踐的內容

  1. 搭建單點登錄框架
  2. 通過數據庫進行單點登錄的驗證
  3. 模擬多個客戶端進行接入
  4. 對接入進行管理

 

四、本篇的學習實踐內容

     本篇主要是解決上面時候的第一個任務:搭建單點登錄框架,初步瞭解CAS。主要要完成如下內容:

  1. 進行域名映射
  2. 下載CAS工程並進行編譯
  3. 準備認證證書
  4. 修改jdk和tomcat
  5. 配置瀏覽器支持https

 

五、準備工作詳細步驟

5.1 域名映射

修改windows的hosts文件,添加cas服務端域名server.cas.com和兩個客戶端應用的域名

App1.cas.com和 app2.cas.com

在最後面添加下面三行

127.0.0.1 server.cas.com

127.0.0.1 app1.cas.com

127.0.0.1 app2.cas.com

保存後退出。

5.2 下載CAS工程並編譯

https://github.com/apereo/cas-overlay-template/tree/5.3  從這個url直接打開cas的5.3版本url, 我使用時最新的已經是6.1版本(工程組織方式從maven 變成了 gradle,打包方法發生了變化)

在下圖中的紅框處,選擇要下載的版本和進行壓縮包下載。

下載後,將壓縮文件解壓後,結構如下:

打開CMD窗口後,進入到上面的目錄,執行 mvn clean package  這個命令的意思進行打包

注意:這裏會比較慢,需要耐心等待。

執行這個步驟的目的是生產一個cas.war包, 可以放到tomcat中運行。經過長時間的等待終於編譯成功,如下圖

編譯成功後,在目錄下生成一個target目錄,在這裏會有一個war包,此war包可以放到tomcat工程裏面

5.3 準備證書

tomcat通過https訪問話,需要有證書,藉助jdk的工具keytool來進行證書的生成。

5.4 生成keystore

通過cmd窗口,進入放置證書文件的目錄,比如 e:/tmp/tomcat-key/

 

keytool -genkey -alias tomcat -keyalg RSA -validity 3650 -keystore e:/tmp/tomcat-key/tomcat.keystore

這裏的密鑰可以用自己設置的,本例中用 123456

生成後檢查該路徑:

5.5 根據keystore生產crt文件

#輸入第一步中keystore的密碼changeit

keytool -export -alias tomcat -file e:/tmp/tomcat-key/tomcat.cer -keystore e:/tmp/tomcat-key/tomcat.keystore -validity 3650

5.6 修改jdk和tomcat

5.6.1 信任授權文件到jdk

首先確定一下jdk的目錄,本例如下:

證書庫cacerts的缺省口令是 changeit

keytool -import -keystore  C:/Java/jdk1.8.0_152/jre/lib/security/cacerts -file E:\tmp\tomcat-key/tomcat.cer -alias tomcat -storepass changeit

 

這樣證書已經準備好並授權到jdk1.8了

5.6.2 修改tomcat 配置

進入要部署的tomcat 目錄,本例中使用的是tomcat 8,目錄C:\Java\apache-tomcat-8.5.34,如下圖:

下面需要修改tomcat 的sever.xml文件,這個文件在tomcat下得conf目錄裏

默認是開啓8080端口,http協議,在這個配置下面添加如下配置:

    <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

              

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

           maxThreads="200" SSLEnabled="true" scheme="https"

           secure="true" clientAuth="false" sslProtocol="TLS"

           keystoreFile="E:\tmp\tomcat-key\tomcat.keystore"

           keystorePass="123456"/>

如下圖:

配置完成後保存。

5.7 配置瀏覽器支持https

在chrome中管理證書,進入配置界面->選擇高級->管理證書

點擊右邊的管理按鈕,彈出導入界面

根據導入提示一步一步進行,選擇前面製作的證書,導入。

六、檢驗準備工作

6.1 部署

將CAS工程編譯後的結果 cas.war 部署到tomcat 環境下,在tomcat的webapps目錄下新建一個cas目錄,將cas.war 拷貝到這個cas目錄

C:\Java\apache-tomcat-8.5.34\webapps\cas

6.2 運行並檢驗

將tomcat目錄下的startup.bat 運行起來(如果是linux的運行startup.sh),看到運行日誌如下:

端口8443已經就緒,啓動startup 完成。打開chrome ,訪問https://server.cas.com:8443/cas/login 如果出現提示,點擊高級/詳細信息,繼續訪問。 

 

旁邊Static Authentication 提示你:你現在只有一個寫死的用戶默認賬號: 默認密碼:Mellon 僅有這一個用戶,目前這個服務端只能看看,沒什麼實際用途。建議您將CAS連接到LDAP、JDBC等。

登陸成功後,界面如下:

以上就是單點登錄的第一部分的學習和實踐內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章