單點(diǎn)登錄

SSO:單點(diǎn)登錄(Single Sign On)
功能:在多個(gè)應(yīng)用系統(tǒng)中,只要登錄其中一個(gè),就可以訪問其他信任的系統(tǒng)。


截圖1.png

<meta charset="utf-8">

如圖所示,圖中有4個(gè)系統(tǒng),分別是Application1、Application2、Application3、和SSO。Application1、Application2、Application3沒有登錄模塊,而SSO只有登錄模塊,沒有其他的業(yè)務(wù)模塊,當(dāng)Application1、Application2、Application3需要登錄時(shí),將跳到SSO系統(tǒng),SSO系統(tǒng)完成登錄,其他的應(yīng)用系統(tǒng)也就隨之登錄了。這完全符合我們對(duì)單點(diǎn)登錄(SSO)的定義。

同域下的SSO:

同域的條件:協(xié)議+域名+端口一致

1.sso登錄以后,可以將Cookie的域設(shè)置為頂域,即.a.com,這樣所有子域的系統(tǒng)都可以訪問到頂域的Cookie。我們?cè)谠O(shè)置Cookie時(shí),只能設(shè)置頂域和自己的域,不能設(shè)置其他的域。比如:我們不能在自己的系統(tǒng)中給baidu.com的域設(shè)置Cookie。

2.Cookie的問題解決了,我們?cè)賮砜纯磗ession的問題。我們?cè)趕so系統(tǒng)登錄了,這時(shí)再訪問app1,Cookie也帶到了app1的服務(wù)端(Server),app1的服務(wù)端怎么找到這個(gè)Cookie對(duì)應(yīng)的Session呢?這里就要把3個(gè)系統(tǒng)的Session共享,如圖所示。共享Session的解決方案有很多,例如:Spring-Session。這樣第2個(gè)問題也解決了。

同域下的單點(diǎn)登錄就實(shí)現(xiàn)了,但這還不是真正的單點(diǎn)登錄。

跨域SSO:

具體流程如下:

1.用戶訪問app系統(tǒng),app系統(tǒng)是需要登錄的,但用戶現(xiàn)在沒有登錄。

2.跳轉(zhuǎn)到CAS server,即SSO登錄系統(tǒng),以后圖中的CAS Server我們統(tǒng)一叫做SSO系統(tǒng)。 SSO系統(tǒng)也沒有登錄,彈出用戶登錄頁。

3.用戶填寫用戶名、密碼,SSO系統(tǒng)進(jìn)行認(rèn)證后,將登錄狀態(tài)寫入SSO的session,瀏覽器(Browser)中寫入SSO域下的Cookie。

4.SSO系統(tǒng)登錄完成后會(huì)生成一個(gè)ST(Service Ticket),然后跳轉(zhuǎn)到app系統(tǒng),同時(shí)將ST作為參數(shù)傳遞給app系統(tǒng)。

5.app系統(tǒng)拿到ST后,從后臺(tái)向SSO發(fā)送請(qǐng)求,驗(yàn)證ST是否有效。

6.驗(yàn)證通過后,app系統(tǒng)將登錄狀態(tài)寫入session并設(shè)置app域下的Cookie。

至此,跨域單點(diǎn)登錄就完成了。以后我們?cè)僭L問app系統(tǒng)時(shí),app就是登錄的。接下來,我們?cè)倏纯丛L問app2系統(tǒng)時(shí)的流程。

1.用戶訪問app2系統(tǒng),app2系統(tǒng)沒有登錄,跳轉(zhuǎn)到SSO。

2.由于SSO已經(jīng)登錄了,不需要重新登錄認(rèn)證。

3.SSO生成ST,瀏覽器跳轉(zhuǎn)到app2系統(tǒng),并將ST作為參數(shù)傳遞給app2。

4.app2拿到ST,后臺(tái)訪問SSO,驗(yàn)證ST是否有效。

5.驗(yàn)證成功后,app2將登錄狀態(tài)寫入session,并在app2域下寫入Cookie。

這樣,app2系統(tǒng)不需要走登錄流程,就已經(jīng)是登錄了。SSO,app和app2在不同的域,它們之間的session不共享也是沒問題的。

CAS總結(jié)之Ticket篇https://blog.csdn.net/fireofjava/article/details/46944689

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容