CAS 之 Apereo CAS 簡介(一)
Background(背景)
隨着公司業務的不斷擴展,后台接入子系統不斷增多,那么我們將針對不同的平台進行拆分為各自對應的子系統,
權限是不變的,那么我們不能每個子系統都單獨進行登錄認證,不然管理人員進行切換系統時會瘋掉。
那么,經過考察選用開源框架 Apereo CAS
, 選定版本為 5.2.0
。目前系統已在線,並已穩定。
接下來我會將系統進行脫敏整理出一套完善的基於微服務的CAS
單點系統實施方案。
由於CAS
是相對比較大的工程,所以建議使用者認真閱讀官方文檔進行調整。
Intro(介紹)
Central Authentication Service (CAS)
,通常稱為CAS。 CAS是一種針對Web的企業多語言單點登錄解決方案,並嘗試成為您的身份驗證和授權需求的綜合平台。
下面是官方的一段簡述:
CAS Enterprise Single Sign-On
- Spring Webflow/Spring Boot Java server component.
- 可拔插認證支持 (LDAP, Database, X.509, SPNEGO, JAAS, JWT, RADIUS, MongoDb, etc)
- 多種協議支持 (CAS, SAML, WS-Federation, OAuth2, OpenID, OpenID Connect, REST)
- 通過各種提供商支持多因素身份驗證 (Duo Security, FIDO U2F, YubiKey, Google Authenticator, Microsoft Azure, Authy etc)
- 支持外部提供者的委托認證,例如: ADFS, Facebook, Twitter, SAML2 IdPs, etc.
- Built-in support for password management, notifications, terms of use and impersonation.
- Support for attribute release including user consent.
- 實時監控和跟蹤應用程序行為,統計信息和日志。
- 用特定的認證策略管理和注冊客戶端應用程序和服務。
- 跨平台的客戶端支持 (Java, .Net, PHP, Perl, Apache, etc).
- Integrations with InCommon, Box, Office365, ServiceNow, Salesforce, Workday, WebAdvisor, Drupal, Blackboard, Moodle, Google Apps, etc.
由以上可以看出, Central Authentication Service (CAS)
支持的功能廣泛。
Architecture(架構)
System Components (系統組件)
CAS服務器和CAS客戶端組成CAS系統架構的兩個物理組件,它們通過各種協議進行通信。
CAS Server(CAS服務器)
CAS服務器是基於Spring框架構建的Java servlet,其主要職責是驗證用戶並通過發布和驗證票證來授予對啟用CAS的服務(通常稱為CAS客戶端)的訪問權限。 當服務器在成功登錄時向用戶發出票證授予票證(TGT)時,將創建SSO會話。 根據用戶的請求,通過使用TGT作為標記的瀏覽器重定向向服務發出服務票據(ST)。 ST隨后通過反向信道通信在CAS服務器上進行驗證。 CAS Protocol文檔中詳細描述了這些交互。
CAS Clients(CAS客戶端)
術語“CAS客戶”在其通用中有兩個不同的含義。 CAS客戶端是可以通過支持的協議與服務器進行通信的任何CAS支持的應用程序。 CAS客戶端也是一個軟件包,可以與各種軟件平台和應用程序集成,以便通過某種身份驗證協議(例如CAS,SAML,OAuth)與CAS服務器進行通信。 已經開發了支持多種軟件平台和產品的CAS客戶端。
Platforms: (軟件平台)
- Apache httpd Server (mod_auth_cas module)
- Java (Java CAS Client)
- .NET (.NET CAS Client)
- PHP (phpCAS)
- Perl (PerlCAS)
- Python (pycas)
- Ruby (rubycas-client)
Applications:(平台)
- Canvas
- Atlassian Confluence
- Atlassian JIRA
- Drupal
- Liferay
- uPortal
- …
Supported Protocols (支持協議)
客戶端通過幾種支持的協議與服務器進行通信。 所有支持的協議在概念上都是相似的,但有些協議的特征或特征使得它們適用於特定的應用程序或用例。 例如,CAS協議支持委托(代理)認證,並且SAML協議支持屬性發布和單一注銷。
Supported protocols:
Software Components(軟件組件)
根據三層子系統來描述CAS服務器是有幫助的:
- Web(Spring MVC / Spring Webflow)
- Ticketing
- Authentication
幾乎所有的部署考慮和組件配置都涉及這三個子系統。 Web層是與包括CAS客戶端在內的所有外部系統進行通信的端點。 Web層委托票務子系統為CAS客戶端訪問生成票證。 SSO會話以成功認證時頒發票證授予票證開始,因此票務子系統經常委托給認證子系統。
認證系統通常只在SSO會話開始時處理請求,盡管還有其他情況可以調用它(例如強制認證)。
Conclusions(結論)
由上圖可以看出, Central Authentication Service (CAS)
在很多大公司內進行了很好的應用。
Recommendations(建議)
It is recommended to deploy CAS locally using the WAR Overlay method.
- 建議使用WAR Overlay方法在本地部署CAS。
- 建議明白幾點
- 2.1 何種應用在何種情況下產生何種事物用於何種目的,白話一點就是要清楚
一種事物的生命周期及變換過程
。 - 2.2 一種新的事物的產生必然有其緣由,
知其然知其所以然
才能不斷地成長。 - 2.3 一般情況下,相對完善的事物產生的同時,都會有與之對應的文檔。那么學習的最好途徑就是仔細閱讀實踐。
- 2.4 即使是官方推出的,對自身應用來講也不一定是最好的,要根據實際情況進行對應的實踐驗證。
- 2.5 盡信書不如無書。
- 2.1 何種應用在何種情況下產生何種事物用於何種目的,白話一點就是要清楚
參考資料
原創聲明
作者:隨風浮雲
出處:http://www.cnblogs.com/ljmatlight
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明。
文中有不妥或者錯誤的地方,歡迎勘誤,如果你有更好的建議,可以給我留言討論,共同進步。
互聯網技術時效性較強,引用請慎重。