在介紹具體協議之前,有必要先說明“認證(Authentication)”和“授權(Authorization)”的區別。
也就是說,當用戶登錄應用系統時,系統需要先認證用戶身份,然後依據用戶身份再進行授權。認證與授權需要聯合使用,才能讓用戶真正登入並使用應用系統。
Central Authentication Service簡稱CAS,是壹種常見的B/S架構的SSO協議。和其他任何SSO協議壹樣,用戶僅需登陸壹次,訪問其他應用則無需再次登陸。
顧名思義,CAS是壹種僅用於Authentication的服務,它和OAuth/OIDC協議不壹樣,並不能作為壹種Authorization的協議。
當前CAS協議包括CAS 1.0、CAS2.0、CAS3.0版本,這三個版本的認證流程基本類似。
CAS的認證流程通過包括幾部分參與者:
認證流程大致為:
註: CAS 1.0是個非常簡單粗陋的協議,在2.0、3.0版本中,Service Ticket的校驗結果均為XML格式, 且引入了壹種proxy模式(不在本文做深入討論)。
CAS協議的詳細標準定義,請參考:
/specs/openid-connect-core-1_0.html
上面簡單介紹了主流的幾種SSO協議,本質上它們大同小異,都是基於中心信任的機制,服務提供者和身份提供者之間通過互信來交換用戶信息,只是每個協議信息交換的細節不同,或者概念上有些不同。
最後,通過壹個簡單對比表格來總結本文重點內容: