一、首先明白三個概念:單點登錄、單點登出、認證授權
單點登錄:a系統登錄后,b系統,c系統不用再登錄就能訪問。SSO 使得在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。即統一認證、統一session
單點登出:b系統登出后,a系統,c系統也為登出狀態。
認證授權:認證和授權是兩個概念。認證:常見的即用戶名密碼登錄,完成用戶身份認證。授權:用戶身份認證成功后,授予用戶相應的權限。具體可參看shiro中認證和授權的相關描述。
二、為什么要選用shiro,cas來實現:
shiro:
Apache Shiro 是 Java 的一個安全框架。目前,使用 Apache Shiro 的人越來越多,因為它相
當簡單,對比 Spring Security,可能沒有 Spring Security 做的功能強大,但是在實際工作時
可能並不需要那么復雜的東西,所以使用小而簡單的 Shiro 就足夠了。對於它倆到底哪個
好,這個不必糾結,能更簡單的解決項目問題就好了。
cas:
CAS 是 Yale 大學發起的一個開源項目,旨在為 Web 應用系統提供一種可靠的單點登錄方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個項目。CAS 具有以下特點:
開源的企業級單點登錄解決方案。
CAS Server 為需要獨立部署的 Web 應用。
CAS Client 支持非常多的客戶端(這里指單點登錄系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
三、整體架構:
涉及到4類應用:
1. 提供單點登錄,單點登出服務的基於cas的web war應用
2. 提供授權的基於shiro的web war應用
3. 提供給具體業務系統的客戶端過濾器jar應用
4. 具體業務系統web war應用