CAS 是 Centeral Authentication Service 縮寫,即 中央認證服務,旨在為 Web 應用系統提供一種可靠的單點登錄方法;本文主要介紹其基本概念,
1、CAS 特點
- 支持 CAS v1, v2 and v3 協議
- 支持 SAML v1 and v2 協議
- 支持 OAuth v2 協議
- 支持 OpenID & OpenID Connect 協議
- 支持 WS-Federation Passive Requestor 協議
- 可通過 JAAS,LDAP,RDBMS,X.509,Radius,SPNEGO,JWT,Remote,Apache Cassandra,Trusted,BASIC,Apache Shiro,MongoDb,Pac4J 等方式進行身份驗證
- 可委托 WS-FED、Facebook、Twitter、SAML IdP、OpenID、OpenID Connect、CAS 等進行身份驗證
- 可通過 ABAC, Time/Date, REST, Internet2's Grouper 等授權
- 可通過 Hazelcast,Ehcache,JPA,Apache Cassandra,Memcached,Apache Ignite,MongoDb,Redis,DynamoDb,Couchbase 等進行高可用集群部署,
- 應用支持 JSON、LDAP、YAML、Apache Cassandra、JPA、Couchbase、MongoDb、DynamoDb、Redis 等技術和組件
- 可通過 Duo Security,YubiKey,RSA,Google Authenticator,U2F,WebAuthn 等進行多重身份驗證
- 可通過控制臺管理管理日志記錄、監視、統計資訊、配置、客戶端注冊等
- 全域和單獨應用的主題設定
- 密碼管理和密碼策略增強
- 可使用 Apache Tomcat, Jetty, Undertow, Docker 來部署應用
2、CAS 架構

CAS 包含兩個部分:CAS Clients(CAS 客戶端)、CAS Server(CAS 服務端),
CAS 服務端是基于 Spring 框架構建的 Java 應用,其主要職責是通過頒發和驗證票證來驗證用戶身份并授予對啟用 CAS 的服務(通常稱為 CAS 客戶端)的訪問權限,
CAS 客戶端 有兩種不同的含義,一種含義:CAS 客戶端是任何啟用了 CAS 的應用程式,可以通過受支持的協議與服務端進行通信,另一種含義:CAS 客戶端也是一個軟體包,可以與各種軟體平臺和應用程式集成,以便通過某些身份驗證協議(例如 CAS、SAML、OAuth)與 CAS 服務端進行通信,
CAS 客戶端已經開發了支持許多軟體平臺和產品,CAS 客戶端支持如下平臺:
Apache httpd Server (mod_auth_cas module)
Java (Java CAS Client)
.NET (.NET CAS Client)
PHP (phpCAS)
Perl (PerlCAS)
Python (pycas)
Ruby (rubycas-client)
3、CAS 支持的協議
客戶端通過幾種受支持的協議中的任何一種與服務端進行通信,所有支持的協議在概念上都是相似的,但有些協議具有特定的功能或特征,例如,CAS 協議支持委派(代理)身份驗證,SAML 協議支持屬性釋放和單點注銷,
支持的協議如下:
CAS (versions 1, 2, and 3)
SAML 1.1 and 2
OpenID Connect
OpenID
OAuth 2.0
WS Federation
4、基于 CAS 協議的單點登錄程序
CAS 框架本身支持多種協議,這里介紹下該框架中使用較多的 CAS 協議登錄程序,

1) 訪問服務:用戶發送請求訪問應用系統(CAS 客戶端)中受保護的服務資源,
2) 重定向認證:CAS 客戶端分析 HTTP 請求中沒有 Service Ticket(即 ST)或 SessionID,說明用戶還沒有進行身份認證,于是,重定向用戶請求到 CAS 服務端進行身份認證,并把用戶此次訪問 CAS 客戶端的 URL 作為引數(service)傳遞給 CAS 服務端,
3) 用戶認證:CAS 服務器接收到身份認證請求后轉向登錄頁面,用戶提供認證資訊后進行身份認證,身份認證成功后,CAS 服務器給瀏覽器回傳一個 TGC(用戶身份資訊憑證的 cookie),
4) 發放票據:CAS 服務器會產生一個隨機的 ST,然后重定向到 CAS 客戶端,
5) 驗證票據:CAS 客戶端收到 ST 后,向 CAS 服務器驗證票據 ST 的合法性,驗證通過后,允許用戶訪問客戶端服務,
6) 傳輸用戶資訊:CAS 服務器驗證票據 ST 通過后,傳輸用戶認證結果資訊給客戶端,
5、術語解釋
Ticket Granting ticket (TGT) :授權票據,用于生成 ST,存在服務端,
Ticket-granting cookie (TGC) :授權票據的 cookie,通過該 cookie 可以查找到 TGT,
Service ticket (ST) :服務票據,由 TGT 生成的一次性票據,用于驗證,只能用一次,CAS 客戶端會呼叫 CAS 服務端來檢驗該票據的有效性,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/468724.html
標籤:Java
上一篇:平臺介面建設規范
下一篇:java學習之jdbc
