CAS 簡(jiǎn)介
CAS 初識(shí)
- CAS : Central Authentication Service 開(kāi)源的項(xiàng)目爷肝;為 Web 應(yīng)用系統(tǒng)提供一種可靠的單點(diǎn)登錄(SSO)解決方法
- 從結(jié)構(gòu)體系看, CAS 包括兩部分: CAS Server 和 CAS Client 陆错。CAS Server 負(fù)責(zé)完成對(duì)用戶的認(rèn)證工作 , 需要獨(dú)立部署 , CAS Server 會(huì)處理用戶名 / 密碼等憑證(Credentials) 灯抛。 CAS Client
負(fù)責(zé)處理對(duì)客戶端受保護(hù)資源的訪問(wèn)請(qǐng)求,需要對(duì)請(qǐng)求方進(jìn)行身份認(rèn)證時(shí)音瓷,重定向到 CAS Server 進(jìn)行認(rèn)證对嚼。
SSO 單點(diǎn)登錄
-
SSO初識(shí)
單點(diǎn)登錄( Single Sign-On , 簡(jiǎn)稱 SSO )是目前比較流行的服務(wù)于企業(yè)業(yè)務(wù)整合的解決方案之一, SSO 使得在多個(gè)應(yīng)用系統(tǒng)中绳慎,用戶只需要 登錄一次 就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)纵竖。
-
SSO 實(shí)現(xiàn)模式的原則
1. 所有的認(rèn)證登錄都在 SSO 認(rèn)證中心進(jìn)行; 2. SSO 認(rèn)證中心通過(guò)一些方法來(lái)告訴 Web 應(yīng)用當(dāng)前訪問(wèn)用戶究竟是不是已通過(guò)認(rèn)證 的用戶杏愤; 3. SSO 認(rèn)證中心和所有的 Web 應(yīng)用建立一種信任關(guān)系靡砌,也就是說(shuō) web 應(yīng)用必須信任認(rèn)證中心。(單點(diǎn)信任)
以下內(nèi)容摘錄,自己描述的差勁
CAS 實(shí)現(xiàn)SSO 單點(diǎn)登錄-基礎(chǔ)模式
基礎(chǔ)模式 SSO 訪問(wèn)流程主要有以下步驟:
訪問(wèn)服務(wù): SSO 客戶端發(fā)送請(qǐng)求訪問(wèn)應(yīng)用系統(tǒng)提供的服務(wù)資源珊楼。
定向認(rèn)證: SSO 客戶端會(huì)重定向用戶請(qǐng)求到 SSO 服務(wù)器通殃。
用戶認(rèn)證:用戶身份認(rèn)證。
發(fā)放票據(jù): SSO 服務(wù)器會(huì)產(chǎn)生一個(gè)隨機(jī)的 Service Ticket 厕宗。
驗(yàn)證票據(jù): SSO 服務(wù)器驗(yàn)證票據(jù) Service Ticket 的合法性画舌,驗(yàn)證通過(guò)后,允許客戶端訪問(wèn)服務(wù)已慢。
傳輸用戶信息: SSO 服務(wù)器驗(yàn)證票據(jù)通過(guò)后曲聂,傳輸用戶認(rèn)證結(jié)果信息給客戶端
-
CAS 最基本的協(xié)議過(guò)程:
base.jpg
???如 上圖: CAS Client 與受保護(hù)的客戶端應(yīng)用部署在一起,以 Filter 方式保護(hù) Web 應(yīng)用的受保護(hù)資源佑惠,過(guò)濾從客戶端過(guò)來(lái)的每一個(gè) Web 請(qǐng)求朋腋,同 時(shí), CAS Client 會(huì)分析 HTTP 請(qǐng)求中是否包含請(qǐng)求 Service Ticket( ST 上圖中的 Ticket) 膜楷,如果沒(méi)有乍丈,則說(shuō)明該用戶是沒(méi)有經(jīng)過(guò)認(rèn)證的;于是 CAS Client 會(huì)重定向用戶請(qǐng)求到 CAS Server ( Step 2 )把将,并傳遞 Service (要訪問(wèn)的目的資源地址)。 Step 3 是用戶認(rèn)證過(guò)程忆矛,如果用戶提供了正確的 Credentials 察蹲, CAS Server 隨機(jī)產(chǎn)生一個(gè)相當(dāng)長(zhǎng)度请垛、唯一、不可偽造的 Service Ticket 洽议,并緩存以待將來(lái)驗(yàn)證宗收,并且重定向用戶到 Service 所在地址(附帶剛才產(chǎn)生的 Service Ticket ) , 并為客戶端瀏覽器設(shè)置一個(gè) Ticket Granted Cookie ( TGC ) ; CAS Client 在拿到 Service 和新產(chǎn)生的 Ticket 過(guò)后亚兄,在 Step 5 和 Step6 中與 CAS Server 進(jìn)行身份核實(shí)混稽,以確保 Service Ticket 的合法性。
???在該協(xié)議中审胚,所有與 CAS Server 的交互均采用 SSL 協(xié)議匈勋,以確保 ST 和 TGC 的安全性。協(xié)議工作過(guò)程中會(huì)有 2 次重定向 的過(guò)程膳叨。但是 CAS Client 與 CAS Server 之間進(jìn)行 Ticket 驗(yàn)證的過(guò)程對(duì)于用戶是透明的(使用 HttpsURLConnection )洽洁。 -
CAS 請(qǐng)求認(rèn)證時(shí)序圖如下:
時(shí)序.png
CAS 如何實(shí)現(xiàn) SSO
???當(dāng)用戶訪問(wèn)另一個(gè)應(yīng)用的服務(wù)再次被重定向到 CAS Server 的時(shí)候, CAS Server 會(huì)主動(dòng)獲到這個(gè) TGC cookie 菲嘴,然后做下面的事情:
- 如果 User 持有 TGC 且其還沒(méi)失效饿自,那么就走基礎(chǔ)協(xié)議圖的 Step4 ,達(dá)到了 SSO 的效果龄坪;
- 如果 TGC 失效昭雌,那么用戶還是要重新認(rèn)證 ( 走基礎(chǔ)協(xié)議圖的 Step3) 。