CAS學習筆記(一)


近期做單點登錄,看了一些CAS資料,做下總結

一、cas簡介

全名:Central Authentication Service

特點:

1、開源的、多協議的 SSO 解決方案; Protocols : Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等。

2、支持多種認證機制: Active Directory 、 JAAS 、 JDBC 、 LDAP 、 X.509 Certificates 等;

3、安全策略:使用票據( Ticket )來實現支持的認證協議;

4、支持授權:可以決定哪些服務可以請求和驗證服務票據( Service Ticket );

5、高可用性:通過把認證過的狀態數據存儲在 TicketRegistry 組件中,這些組件有很多支持分布式環境的實現,如: BerkleyDB 、 Default 、 EhcacheTicketRegistry 、 JDBCTicketRegistry 、 JBOSS TreeCache 、 JpaTicketRegistry 、 MemcacheTicketRegistry 等

6、支持多種客戶端: Java 、 .Net 、 PHP 、 Perl 、 Apache, uPortal 等。

 

二、原理

2.1 CAS Server

完成認證工作,對用戶名、密碼進行校驗,需要獨立部署,如集團SSO中的sso項目。

2.2 CAS Client

使用Filter將請求攔截下來,當請求中含票據時,重定向到CAS Server進行驗證,不含票據時,到CAS Server登錄頁面進行登錄,如集團中的esmp項目。

2.3 協議圖

1. 訪問服務: SSO 客戶端發送請求訪問應用系統提供的服務資源。

2. 定向認證: SSO 客戶端會重定向用戶請求到 SSO 服務器。

3. 用戶認證:用戶身份認證。

4. 發放票據: SSO 服務器會產生一個隨機的 Service Ticket 。

5. 驗證票據: SSO 服務器驗證票據 Service Ticket 的合法性,驗證通過后,允許客戶端訪問服務。

6. 傳輸用戶信息: SSO 服務器驗證票據通過后,傳輸用戶認證結果信息給客戶端。

2.4 時序圖

比如A、B兩個CAS客戶端,當A登錄后,A中保存session(流程這里不做重述,見上圖),那這個時候B再去請求,應該是不用再次輸入用戶名密碼認證的。具體流程:

瀏覽器拿着cookie到B(上圖1);B發現沒有session,會到CAS服務端去認證,發現是已登錄用戶,所以返回ST重定向到瀏覽器(上圖2);瀏覽器再重定向到B並發送ST參數(上圖4);B再去CAS Server認證ST,確認已登錄(上圖5);創建session (上圖6);登錄成功(上圖7)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM