日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CAS单点登入登出原理

發(fā)布時(shí)間:2024/1/1 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAS单点登入登出原理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CAS

集中式認(rèn)證服務(wù)(Central Authentication Service,CAS),單點(diǎn)登錄協(xié)議,允許一個(gè)用戶訪問多個(gè)應(yīng)用程序,而只需要提供一次憑證。

具體實(shí)現(xiàn)框架有:OAuth2,Shiro等。

普通CAS1.0

登入詳細(xì)流程

流程解析:

(1-2) 用戶第一次通過瀏覽器Browser訪問受保護(hù)的應(yīng)用系統(tǒng)app1,應(yīng)用系統(tǒng)app1發(fā)現(xiàn)訪問請(qǐng)求中沒有JSESSIONID or ST(service ticket) ,要求Browser重定向去CAS service獲取ST;

  • 在每個(gè)受保護(hù)的應(yīng)用系統(tǒng)上都部署有CAS client,邏輯上與應(yīng)用系統(tǒng)獨(dú)立,物理上與應(yīng)用系統(tǒng)部署在一起,實(shí)現(xiàn)上通過過濾器filter的方式保護(hù)應(yīng)用系統(tǒng),CAS client主要提供兩大塊功能:

    AuthenticationFilter:負(fù)責(zé)校驗(yàn)用戶是否已認(rèn)證

    TicketValidationFilter:負(fù)責(zé)校驗(yàn)ST的合法性

  • 應(yīng)用系統(tǒng)app1通過JSESSIONID or ST判斷用戶有沒有登入:先判斷JSESSIONID,再判斷ST;

  • (3) 瀏覽器Browser重定向去CAS service獲取ST;

    (4-5) CAS service發(fā)現(xiàn)TGC(ticket granting cookie)為空 or 以TGC為key的session不存在,返回Browser登錄表單;

    (6) 瀏覽器Browser給用戶展示登錄頁(yè)面;

    (7-8) 用戶輸入用戶名密碼等登錄信息后,Browser將登錄信息送給CAS service;

    (9-11) CAS service根據(jù)用戶登錄信息進(jìn)行驗(yàn)證,如果驗(yàn)證通過,CAS service就會(huì)創(chuàng)建:TGC(ticket granting cookie)、TGT(ticket granting ticket,票根),并將以TGC為key,TGT為value創(chuàng)建SSO(Single-SignOn) session緩存在CAS service,最后根據(jù)TGT創(chuàng)建ST(service ticket,票據(jù));最后TGC和ST返回給Browser;

  • 為了保證ST的安全性:ST 是基于隨機(jī)生成的,沒有規(guī)律性。而且,CAS規(guī)定 ST 只能存活一定的時(shí)間,然后 CAS service 會(huì)讓它失效。而且,CAS 協(xié)議規(guī)定ST只能使用一次,無論ST驗(yàn)證是否成功, CAS service 都會(huì)清除服務(wù)端緩存中的該ST ,從而可以確保一個(gè)ST不被使用兩次。

  • 為什么不能用TGC代替ST,即為什么還需要由TGT另外生成一個(gè)ST?

    如果有TGC代替ST,為了跨域,在第11步重定向時(shí)勢(shì)必要將TGC作為URL一部分代替ST,這樣TGC直接暴露出來,且TGC有效期相對(duì)較長(zhǎng),攻擊者完全可以取得這個(gè)TGC去另外受保護(hù)的應(yīng)用系統(tǒng)獲取資源,甚至于可以將這個(gè)TGC記錄下來,在瀏覽器Browser退出,TGC刪除但是CAS service SSO session未失效的情況下,拿著記錄下來的TGC再去獲取受保護(hù)應(yīng)用系統(tǒng)的訪問權(quán)限,這也是ST要設(shè)置只能使用一次的原因。

  • CAS service主要的是KDC(Key Distribution Center,密鑰分發(fā)中心),而KDC包括:

    AS(Authentication Service,認(rèn)證服務(wù)):根據(jù)用戶登入信息,進(jìn)行登入操作,發(fā)放TGT

    TGS(Ticket Granting Service,票據(jù)授受服務(wù)):根據(jù)TGT,發(fā)放ST

  • (12) Browser收到TGC后設(shè)置cookie,并帶著ST再次請(qǐng)求應(yīng)用系統(tǒng)app1;

    從這里看到,TGT是依靠TGC來索引的,而TGC cookie一般是指定時(shí)間or關(guān)閉瀏覽器Browser時(shí)刪除,而一旦TGC刪除,TGT也遺失了,因此,為節(jié)約CAS service緩存,可以定時(shí)刪除迷失的TGT SSO session。

    (13) 受保護(hù)的應(yīng)用系統(tǒng)app1拿著ST去CAS service驗(yàn)證ST的合法性;

    這里CAS client的TicketValidationFilter起作用

    (14) CAS service驗(yàn)證ST,返回驗(yàn)證結(jié)果,認(rèn)證主體和相關(guān)屬性(包括后面的JSESSIONID);

    (15) 應(yīng)用系統(tǒng)app1確認(rèn)ST校驗(yàn)通過后,創(chuàng)建本次連接的session,并讓Browser設(shè)置cookie JSESSIONID;

    認(rèn)證成功后創(chuàng)建應(yīng)用session的目的是后面用戶訪問該應(yīng)用無需再次登錄及再次去CAS service中驗(yàn)證的必要,從另一方面來說,在應(yīng)用系統(tǒng)上建立應(yīng)用session也是必要的,因?yàn)镾T是CAS service重定向帶過來的,后面Browser訪問時(shí)沒有ST,也限制了ST最多只使用一次,因此必須有一個(gè)東西來在Browser和應(yīng)用系統(tǒng)間證明用戶的登入,這個(gè)東西就是應(yīng)用session及其JSESSIONID。

    (16) Browser設(shè)置應(yīng)用系統(tǒng)app1本次連接訪問的cookie JSESSIONID后,帶著JSESSIONID cookie再去訪問應(yīng)用系統(tǒng)app1;

    (17-18) 應(yīng)用系統(tǒng)app1校驗(yàn)JSESSIONID通過,返回受保護(hù)的資源;

    (19) 用戶成功看到受保護(hù)的系統(tǒng)頁(yè)面;


    (20-21) 用戶第二次訪問受保護(hù)的應(yīng)用系統(tǒng)app1時(shí),Browser帶著cookie JSESSIONID請(qǐng)求app1;

    (22-23) 應(yīng)用系統(tǒng)app1校驗(yàn)JSESSIONID通過,返回受保護(hù)的資源;

    (24) 用戶成功再次看到受保護(hù)的系統(tǒng)頁(yè)面;


    (25-27) 用戶第一次訪問受保護(hù)的應(yīng)用系統(tǒng)app2時(shí),應(yīng)用系統(tǒng)app2發(fā)現(xiàn)訪問請(qǐng)求中沒有JSESSIONID or ST,要求Browser重定向去CAS service獲取ST;

    (28) 瀏覽器Browser帶著cookie TGC重定向去CAS service獲取ST;

    (29-30) CAS service發(fā)現(xiàn)以TGC為key的session TGT存在,且TGT合法有效,則根據(jù)TGT創(chuàng)建ST,并將ST返回給Browser;

    (31) Browser帶著ST再次請(qǐng)求應(yīng)用系統(tǒng)app2;

    (32-34) 受保護(hù)的應(yīng)用系統(tǒng)app2拿著ST去CAS service驗(yàn)證ST的合法性;CAS service驗(yàn)證ST,返回驗(yàn)證結(jié)果,認(rèn)證主體和相關(guān)屬性(包括后面的JSESSIONID); 應(yīng)用系統(tǒng)app1確認(rèn)ST校驗(yàn)通過后,創(chuàng)建本次連接的session,并讓Browser設(shè)置cookie JSESSIONID;

    (35) Browser設(shè)置應(yīng)用系統(tǒng)app2本次連接訪問的cookie JSESSIONID后,帶著JSESSIONID cookie再去訪問應(yīng)用系統(tǒng)app2;

    (36-37) 應(yīng)用系統(tǒng)app2校驗(yàn)JSESSIONID通過,返回受保護(hù)的資源;

    (38) 用戶成功看到受保護(hù)的系統(tǒng)頁(yè)面;

    CAS所有的請(qǐng)求都需要在有SSL保護(hù)的HTTS下進(jìn)行才安全。

    登出流程

    代理CAS2.0

    未完待續(xù)~~





    參考:

    如何設(shè)計(jì)一個(gè)通用的權(quán)限管理系統(tǒng)?說的太詳細(xì)了!

    cas系列(一)–cas單點(diǎn)登錄基本原理

    CAS單點(diǎn)登錄原理(包含詳細(xì)流程,講得很透徹,耐心看下去一定能看明白!)

    【SSO單點(diǎn)系列】(6):CAS4.0 單點(diǎn)流程序列圖(中文版)以及相關(guān)術(shù)語(yǔ)解釋(TGT、ST、PGT、PT、PGTIOU)

    CAS認(rèn)證原理、TGT/ST、流程介紹

    CAS-認(rèn)證流程詳解

    Kerberos身份驗(yàn)證流程

    kerberos 認(rèn)證學(xué)習(xí)

    kerberos的as tgs cs認(rèn)證基本原理

    總結(jié)

    以上是生活随笔為你收集整理的CAS单点登入登出原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。