天天看點

cas 登入之後不跳轉_辣雞,使用CAS機制完成SSO

cas 登入之後不跳轉_辣雞,使用CAS機制完成SSO

完成單點登入其實就是完成會話共享問題,之前談了談關于在二級域名共享cookie實作單點登入的方式cookie在二級域名間共享完成sso。缺陷就是一旦二級域名無法共享cookie時,單點登入就會失效,是以就有了CAS機制(Central Authentiction Service)。還是那句話,不要對一些名詞産生畏懼,CAS本質解決的還是session共享的問題,隻是共享方式差別于域名間cookie共享。假設我們有app1.star.com,app2.moon.com,cas.sun.com,分别代表應用1,應用2和CAS認證中心。首次請求app1時,會檢查本地會話id,這時肯定是木有的,是以會重定向到cas認證中心進行登入認證, 登入完成cas中心會頒發一個ticket票據(名字無所謂,主要是ticket要關聯cas中心sessionId),ticket都是一次性使用,可以直接丢redis,設定較短的有效期,防止ticket洩漏重複使用。此時cas系統已是登入狀态的,cas有自己的sessionId,并且生成的ticket可以關聯到sessionId。so,cas就可以重定向回app1請求路徑,并附帶請求參數ticket。app1檢查本地會話id,還是未登入,但是有了一個ticket,于是拿ticket去redis擷取sessionId(不一定是redis,和cas放ticket一緻即可)。app1有了sessionId,就可以拿到有關sessionId的attrs資訊,然後自己在本地生成一個cookie,重定向到請求路徑即可,這時檢查本地會話id已經登入,app1就完成了登入相關操作。

cas 登入之後不跳轉_辣雞,使用CAS機制完成SSO

這時再請求app2,同樣檢查本地會話id,未登入跳轉cas中心,但此時cas已經登入了,so,cas直接頒發一個ticket跳轉回app2原請求url。app2檢查本地會話id,還是未登入,但是有了一個ticket,于是拿ticket去redis擷取sessionId及相關會話id資料,然後生成自己的cookie,跳轉到請求路徑,至此app2也完成了免登操作。

cas 登入之後不跳轉_辣雞,使用CAS機制完成SSO

原理搞清楚了,宏觀而言,實作起來自然非常簡單,搞一套cas認證中心,然後外放一套cas認證依賴,搞定。

繼續閱讀