CAS(Central Authentication Service) 是Yale大學發起的一個企業級的、開源的項目,旨在為Web應用系統提供一種可靠的單點登錄解決方法(屬於Web SSO)。
CAS開始於2001年, 並在2004年12月正式成為JA-SIG的一個項目。
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等。
本文內容主要針對Web 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 Server和CAS Client。
CAS Server負責完成對用戶的認證工作,需要獨立部署,CAS Server會處理用戶名/密碼等憑證(Credentials)。
負責處理對客戶端受保護資源的訪問請求,需要對請求方進行身份認證時,重定向到CAS Server進行認證。(原則上,客戶端應用不再接受任何的用戶名密碼等Credentials)。
CAS Client與受保護的客戶端應用部署在一起,以Filter方式保護受保護的資源。
基礎模式SSO訪問流程主要有以下步驟:
1.訪問服務:SSO客戶端發送請求訪問應用系統提供的服務資源。
2.定向認證:SSO客戶端會重定向用戶請求到SSO服務器。
3.用戶認證:用戶身份認證。
4.發放票據:SSO服務器會產生一個隨機的Service Ticket。
5.驗證票據:SSO服務器驗證票據Service Ticket的合法性,驗證通過後,允許客戶端訪問服務。
6.傳輸用戶信息:SSO服務器驗證票據通過後,傳輸用戶認證結果信息給客戶端。
下面是CAS最基本的協議過程:
基礎協議圖