CAS實現單點登錄理解


CAS

  是 Yale 大學發起的一個企業級的、開源的項目,旨在為 Web 應用系統提供一種可靠的單點登錄解決方法(屬於 Web SSO ),CAS 開始於 2001 年, 並在 2004 年 12 月正式成為 JA-SIG 的一個項目。

SSO

  單點登錄( Single Sign-On , 簡稱 SSO )是目前比較流行的服務於企業業務整合的解決方案之一, SSO 使得在多個應用系統中,用戶只需要 登錄一次 就可以訪問所有相互信任的應用系統。

  一般 SSO 體系主要角色有三種:

    1、 User (多個)

    2、 Web 應用(多個)

    3、 SSO 認證中心( 1 個 

  SSO 實現模式一般包括以下三個原則:

    1、   所有的認證登錄都在 SSO 認證中心進行;

    2、   SSO 認證中心通過一些方法來告訴 Web 應用當前訪問用戶究竟是不是已通過認證的用戶;

    3、   SSO 認證中心和所有的 Web 應用建立一種信任關系,也就是說 web 應用必須信任認證中心。(單點信任)

  SSO 的主要實現方式有:  

  1、   共享 cookies

      基於共享同域的 cookie 是 Web 剛開始階段時使用的一種方式,它利用瀏覽同域名之間自動傳遞 cookies 機制,實現兩個域名之間系統令牌傳遞問題;另外,關於跨域           問題,雖然 cookies 本身不跨域,但可以利用它實現跨域的 SSO 。如:代理、暴露 SSO 令牌值等。

      缺點:不靈活而且有不少安全隱患,已經被拋棄。

  2、   Broker-based( 基於經紀人 )

      這種技術的特點就是,有一個集中的認證和用戶帳號管理的服務器。經紀人給被用於進一步請求的電子身份存取。中央數據庫的使用減少了管理的代價,並為認證提供            一個公共和獨立的 "第三方 " 。例如 Kerberos 、 Sesame 、 IBM KryptoKnight (憑證庫思想 ) 等。 Kerberos是由麻省理工大學發明的安全認證服務,已經                                     被 UNIX 和 Windows 作為默認的安全認證服務集成進操作系統。

  3、   Agent-based (基於代理人)

                   在這種解決方案中,有一個自動地為不同的應用程序認證用戶身份的代理程序。這個代理程序需要設計有不同的功能。比如,它可以使用口令表或加密密鑰來自動地將            認證的負擔從用戶移開。代理人被放在服務器上面,在服務器的認證系統和客戶端認證方法之間充當一個 " 翻譯 " 。例如 SSH 等。

      4、   Token-based

                 例如 SecureID,WebID ,現在被廣泛使用的口令認證,比如 FTP 、郵件服務器的登錄認證,這是一種簡單易用的方式,實現一個口令在多種應用當中使用。

      5、   基於網關

      6、   基於 SAML

               SAML(Security Assertion Markup Language ,安全斷言標記語言)的出現大大簡化了 SSO ,並被 OASIS 批准為 SSO 的執行標准 。開源組織 OpenSAML 實現                        了 SAML 規范。

CAS的基本原理

  從結構體系看, CAS 包括兩部分: CAS Server 和 CAS Client 。

CAS Server

  CAS Server 負責完成對用戶的認證工作 , 需要獨立部署 CAS Server 會處理用戶名 / 密碼等憑證(Credentials) 。

CAS Client

  負責處理對客戶端受保護資源的訪問請求,需要對請求方進行身份認證時,重定向到 CAS Server 進行認證。(原則上,客戶端應用不再接受任何的用戶名密碼等 Credentials )。

CAS Client 與受保護的客戶端應用部署在一起,以 Filter 方式保護受保護的資源。

理解

CAS 的 SSO 實現方式可簡化理解為: 1 個 Cookie 和 N 個 Session 。 CAS Server 創建 cookie,在所有應用認證時使用,各應用通過創建各自的 Session 來標識用戶是否已登錄。

用戶在一個應用驗證通過后,以后用戶在同一瀏覽器里訪問此應用時,客戶端應用中的過濾器會在 session 里讀取到用戶信息,所以就不會去 CAS Server 認證。如果在此瀏覽器里訪問別的 web 應用時,客戶端應用中的過濾器在 session 里讀取不到用戶信息,就會去 CAS Server 的 login 接口認證,但這時CAS Server 會讀取到瀏覽器傳來的 cookie ( TGC ),所以 CAS Server 不會要求用戶去登錄頁面登錄,只是會根據 service 參數生成一個 Ticket ,然后再和 web 應用做一個驗證 ticket 的交互而已。

CAS搭建過程參考:http://www.cnblogs.com/lr393993507/p/5231432.html

 


免責聲明!

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



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