CAS 之 Apereo CAS 簡介(一)

CAS 之 Apereo CAS 簡介(一)

Background(背景)

隨着公司業務的不斷擴展,後臺接入子系統不斷增多,那麼咱們將針對不一樣的平臺進行拆分爲各自對應的子系統,
權限是不變的,那麼咱們不能每一個子系統都單獨進行登陸認證,否則管理人員進行切換系統時會瘋掉。
那麼,通過考察選用開源框架 Apereo CAS , 選定版本爲 5.2.0。目前系統已在線,並已穩定。
接下來我會將系統進行脫敏整理出一套完善的基於微服務的CAS單點系統實施方案。
因爲CAS是相對比較大的工程,因此建議使用者認真閱讀官方文檔進行調整。php


Intro(介紹)

Central Authentication Service (CAS),一般稱爲CAS。 CAS是一種針對Web的企業多語言單點登陸解決方案,並嘗試成爲您的身份驗證和受權需求的綜合平臺。html

下面是官方的一段簡述:java

CAS Enterprise Single Sign-Ongit

  • 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) 支持的功能普遍。github

Architecture(架構)

Architecture

System Components (系統組件)

CAS服務器和CAS客戶端組成CAS系統架構的兩個物理組件,它們經過各類協議進行通訊。瀏覽器

CAS Server(CAS服務器)

CAS服務器是基於Spring框架構建的Java servlet,其主要職責是驗證用戶並經過發佈和驗證票證來授予對啓用CAS的服務(一般稱爲CAS客戶端)的訪問權限。 當服務器在成功登陸時向用戶發出票證授予票證(TGT)時,將建立SSO會話。 根據用戶的請求,經過使用TGT做爲標記的瀏覽器重定向向服務發出服務票據(ST)。 ST隨後經過反向信道通訊在CAS服務器上進行驗證。 CAS Protocol文檔中詳細描述了這些交互。ruby

CAS Clients(CAS客戶端)

術語「CAS客戶」在其通用中有兩個不一樣的含義。 CAS客戶端是能夠經過支持的協議與服務器進行通訊的任何CAS支持的應用程序。 CAS客戶端也是一個軟件包,能夠與各類軟件平臺和應用程序集成,以便經過某種身份驗證協議(例如CAS,SAML,OAuth)與CAS服務器進行通訊。 已經開發了支持多種軟件平臺和產品的CAS客戶端。服務器

Platforms: (軟件平臺)架構

Applications:(平臺)框架

  • Canvas
  • Atlassian Confluence
  • Atlassian JIRA
  • Drupal
  • Liferay
  • uPortal

Supported Protocols (支持協議)

客戶端經過幾種支持的協議與服務器進行通訊。 全部支持的協議在概念上都是類似的,但有些協議的特徵或特徵使得它們適用於特定的應用程序或用例。 例如,CAS協議支持委託(代理)認證,而且SAML協議支持屬性發布和單一註銷。

Supported protocols:

Software Components(軟件組件)

根據三層子系統來描述CAS服務器是有幫助的:

幾乎全部的部署考慮和組件配置都涉及這三個子系統。 Web層是與包括CAS客戶端在內的全部外部系統進行通訊的端點。 Web層委託票務子系統爲CAS客戶端訪問生成票證。 SSO會話以成功認證時頒發票證授予票證開始,所以票務子系統常常委託給認證子系統。
認證系統一般只在SSO會話開始時處理請求,儘管還有其餘狀況能夠調用它(例如強制認證)。

Conclusions(結論)

由上圖能夠看出, Central Authentication Service (CAS) 在不少大公司內進行了很好的應用。

Recommendations(建議)

It is recommended to deploy CAS locally using the WAR Overlay method.

  1. 建議使用WAR Overlay方法在本地部署CAS。
  2. 建議明白幾點
    • 2.1 何種應用在何種狀況下產生何種事物用於何種目的,白話一點就是要清楚 一種事物的生命週期及變換過程
    • 2.2 一種新的事物的產生必然有其原因,知其然知其因此然 才能不斷地成長。
    • 2.3 通常狀況下,相對完善的事物產生的同時,都會有與之對應的文檔。那麼學習的最好途徑就是仔細閱讀實踐。
    • 2.4 即便是官方推出的,對自身應用來說也不必定是最好的,要根據實際狀況進行對應的實踐驗證。
    • 2.5 盡信書不如無書。

參考資料

Apereo CAS
https://github.com/apereo/cas


原創聲明

做者:隨風浮雲
出處:http://www.cnblogs.com/ljmatlight 本文版權歸做者全部,歡迎轉載,但未經做者贊成必須保留此段聲明。 文中有不妥或者錯誤的地方,歡迎勘誤,若是你有更好的建議,能夠給我留言討論,共同進步。 互聯網技術時效性較強,引用請慎重。

相關文章
相關標籤/搜索