cas sso单点登录 登录过程和登出过程原理说明
CAS大體原理我就不說(shuō)了,網(wǎng)上一大把,不過(guò)具體交互流程沒(méi)說(shuō)清楚,所以有這篇文章,如果有錯(cuò)誤,請(qǐng)多多指教?
?
登錄過(guò)程
用戶第一次訪問(wèn)一個(gè)CAS 服務(wù)的客戶web 應(yīng)用時(shí)(訪問(wèn)URL :http://192.168.1.90:8081/web1 ),
部署在客戶web 應(yīng)用的cas AuthenticationFilter ,會(huì)截獲此請(qǐng)求,生成service 參數(shù),然后redirect 到CAS 服務(wù)的login 接口,
url為https://cas:8443/cas/login?service=http%3A%2F%2F192.168.1.90%3A8081%2Fweb1%2F&logoutUrl=http%3A%2F%2F192.168.1.90%3A8081%2Fweb1%2Flogout%2F,
這個(gè)URL中有2個(gè)地址,一個(gè)是登錄完成后的跳轉(zhuǎn)地址,另外一個(gè)是用戶登出時(shí) 訪問(wèn)的當(dāng)前服務(wù)登出URL地址,后面這個(gè)地址保存在Cas server中,用戶登出的時(shí)候使用
認(rèn)證成功后,CAS 服務(wù)器會(huì)生成認(rèn)證cookie ,寫入瀏覽器,同時(shí)將cookie 緩存到服務(wù)器本地,
CAS 服務(wù)器還會(huì)根據(jù)service 參數(shù)生成ticket,ticket 會(huì)保存到服務(wù)器,也會(huì)加在url 后面,
然后將請(qǐng)求redirect 回客戶web 應(yīng)用,url 為http://192.168.1.90:8081/web1/?ticket=ST-5-Sx6eyvj7cPPCfn0pMZuMwnbMvxpCBcNAIi6-20 。
這時(shí)客戶端的AuthenticationFilter 看到ticket 參數(shù)后,會(huì)跳過(guò),由其后面的TicketValidationFilter 處理,
TicketValidationFilter 會(huì)利用httpclient 工具訪問(wèn)cas 服務(wù)的/serviceValidate 接口,
將ticket 、service 都傳到此接口,由此接口驗(yàn)證ticket 的有效性,TicketValidationFilter 如果得到驗(yàn)證成功的消息,
就會(huì)把用戶信息寫入web 應(yīng)用的session里。至此為止,SSO 會(huì)話就建立起來(lái)了,以后用戶在同一瀏覽器里訪問(wèn)此web 應(yīng)用時(shí),
AuthenticationFilter 會(huì)在session 里讀取到用戶信息,所以就不會(huì)去CAS 認(rèn)證,如果在此瀏覽器里訪問(wèn)別的web 應(yīng)用時(shí),AuthenticationFilter 在session 里讀取不到用戶信息,
會(huì)去CAS 的login 接口認(rèn)證,但這時(shí)CAS 會(huì)讀取到瀏覽器傳來(lái)的cookie ,所以CAS 不會(huì)要求用戶去登錄頁(yè)面登錄,只是會(huì)根據(jù)service 參數(shù)生成一個(gè)ticket ,
然后再和web 應(yīng)用做一個(gè)驗(yàn)證ticket 的交互。
?
?
登出過(guò)程
用戶執(zhí)行登出操作,當(dāng)前應(yīng)用服務(wù)器會(huì)把這個(gè)登出請(qǐng)求重定向到CAS server,CAS server接受登出請(qǐng)求后,會(huì)檢測(cè)用戶的TCG Cookie,把對(duì)應(yīng)的session清除,同時(shí)會(huì)找到所有通過(guò)該TGC sso登錄的應(yīng)用服務(wù)器URL提交請(qǐng)求,所有的回調(diào)請(qǐng)求中,包含一個(gè)參數(shù)logoutRequest,訪問(wèn)這個(gè)登出URL,
所有收到請(qǐng)求的應(yīng)用服務(wù)器(就是是CAS client)會(huì)解析這個(gè)參數(shù),取得sessionId,根據(jù)這個(gè)Id取得session后,把session刪除。這樣就實(shí)現(xiàn)單點(diǎn)登出的功能,用戶無(wú)法在這個(gè)具體應(yīng)用上繼續(xù)操作了,只能重新登錄才行。
?
?注:以上內(nèi)容根據(jù)網(wǎng)絡(luò)內(nèi)容整理而成,如果侵犯到您的權(quán)益,請(qǐng)聯(lián)系我
參考文檔:
http://www.blogjava.net/xmatthew/archive/2008/07/09/213808.html
http://blog.csdn.net/feng27156/article/details/38060099
轉(zhuǎn)載于:https://www.cnblogs.com/hubaoxi/p/4977058.html
總結(jié)
以上是生活随笔為你收集整理的cas sso单点登录 登录过程和登出过程原理说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (软件工程复习核心重点)第八章面向对象方
- 下一篇: Css 备忘知识点