Cas sso單點登陸學習(一)

剛接觸cas沒多久,想把學習cas的過程記錄下來,這樣之後再用能夠儘快回憶和上手。web

也許理解的有問題,還請懂的大神指教一下,先謝過各位大俠了。瀏覽器

一,cas的基本原理緩存

1. 用戶訪問 打有cas client jar包的web1 service,此時由於web1 sercvice 的過濾器發現請求沒ST參數(ST參數 意思就是service ticket 是一種服務用的票據,我的理解是爲了在cas 服務端驗證此service能夠被直接登陸所產生的的票據),同時在session中也沒有發現有任何用戶的信息(這裏我的感受是由於沒有保存TGT的緣故,再加上用戶訪問的時候沒有帶着TGC因此查不到我的信息),web1 service 就重定向到了 cas server。cookie

2. cas server 也沒有檢測到有ST參數,因此就跳轉到cas server提供的登陸界面了。session

3. 當用戶輸入驗證信息經過之後,cas server 會生成一個TGT (用於用戶成功登陸的票據,他的key就是TGC就是保存在客戶端的cookie)和 一個隨機的ST參數,並放入緩存中,此時cas server 會重定向到 web1 service,同時把ST參數加在web1 service url的後面,而後把TGC 這個cookie 寫在瀏覽器端。eclipse

4. 請求到了web1 service 後,web1 service 發現有ST參數, 因而帶着ST參數像 cas server 發起了驗證請求。 cas server 接到驗證請求之後,拿着ST參數和他剛隨機產生的ST作對比,若是一致則向web1 service返回成功,並銷燬ST參數。學習

5. 此時web1 service拿到返回成功的表示後,保存TGT 用戶的身份票據,而後返回web1 登陸事後的界面。下一次在訪問web1的時候 瀏覽器會帶着TGC來請求,此時在web1 service的session中會查詢到此用戶信息(也就是用TGC去去查TGT),直接登陸成功返回頁面。url

6. 假如用戶去訪問web2 service, 這個應用服務也添加cas client jar包並改了配置。此時,用戶訪問web2 service時 是帶着TGC 這個cookie的, 可是web2 service發現請求沒帶ST參數,而且發現session有用戶信息,因此直接重定向到cas server 中。server

7. cas server 發現沒有ST 參數 可是 有TGC,因而cas server 就用此TGC 在本身緩存的TGT中查詢了一下 發現了用戶的身份因而 就生成了一個隨機的ST而且重定向到了web2 service,也就是把ST參數 加到了web2 service 的最後。ip

8. web2 service 接收到請求之後,攔截器發現了有ST參數了,就拿着ST參數去cas server 端請求驗證去了。驗證經過,隨機的ST參數被銷燬,而後返回成功標識給web2 service,web2 service 保存TGT用戶信息,並返web2的頁面給用戶。

我的理解 TGC 就像一把鑰匙, TGT 就是一個門,門裏面就是保存的用戶信息,鑰匙孔就是key值,而後瀏覽器保存這把鑰匙(也就是TGC cookie) 想開哪一個開哪一個,ST就像是一張證實,證實了本身是cas client的身份,向cas server證實此應用已經進行過配置並有過濾器有cas 的jar包,能夠加入cas 單點登陸系統進行統一認證。

圖先不畫了 用工夫補上,原理就是這樣,下面準備說一說如何在eclipse下部署cas server 和 我在部署cas server時遇到的問題。

相關文章
相關標籤/搜索