單點(diǎn)登錄
單點(diǎn)登錄(SSO)系統(tǒng)允許用戶在多個(gè)應(yīng)用程序之間共享身份驗(yàn)證狀態(tài),即在一個(gè)應(yīng)用程序中登錄后,用戶可以在其他應(yīng)用程序中自動(dòng)登錄。
下面的流程描述了在不同域的系統(tǒng)之間實(shí)現(xiàn)單點(diǎn)登錄的基本步驟:
-
用戶首次訪問:用戶首次訪問應(yīng)用A,發(fā)現(xiàn)用戶未登錄(通常是通過檢查cookie來判斷),應(yīng)用A將用戶重定向到認(rèn)證服務(wù)器。
-
用戶登錄:用戶在認(rèn)證服務(wù)器上輸入其憑據(jù)(例如,用戶名和密碼)。認(rèn)證服務(wù)器驗(yàn)證用戶憑據(jù)。
-
生成全局會(huì)話:如果用戶憑據(jù)有效,認(rèn)證服務(wù)器會(huì)創(chuàng)建—個(gè)全局會(huì)話,并將相關(guān)的session id存儲(chǔ)在一個(gè)cookie中,該cookie對(duì)認(rèn)證服務(wù)器域是可見的。
-
生成服務(wù)票據(jù):認(rèn)證服務(wù)器生成一個(gè)服務(wù)票據(jù)(ST)給應(yīng)用A,然后將用戶重定向回應(yīng)用A,并在重定向請(qǐng)求中包含此服務(wù)票據(jù)。
-
驗(yàn)證服務(wù)票據(jù):應(yīng)用A收到服務(wù)票據(jù)后,需要回調(diào)認(rèn)證服務(wù)器驗(yàn)證這個(gè)服務(wù)票據(jù)。
-
生成局部會(huì)話:認(rèn)證服務(wù)器驗(yàn)證服務(wù)票據(jù)有效后,應(yīng)用A創(chuàng)建一個(gè)局部會(huì)話,并將相關(guān)的session id存儲(chǔ)在一個(gè)cookie中,該cookie對(duì)應(yīng)用A域是可見的。
-
用戶訪問其他應(yīng)用:用戶現(xiàn)在可以訪問應(yīng)用A的受保護(hù)資源。當(dāng)用戶第一次訪問另一個(gè)應(yīng)用B時(shí),應(yīng)用B發(fā)現(xiàn)用戶未登錄,與步驟1相同,應(yīng)用B將用戶重定向到認(rèn)證服務(wù)器。
-
檢查全局會(huì)話:這次用戶訪問認(rèn)證服務(wù)器時(shí),認(rèn)證服務(wù)器發(fā)現(xiàn)用戶的全局會(huì)話已存在(通過檢查之前存儲(chǔ)的cookie),所以用戶無需再次輸入憑據(jù)。
-
生成新的服務(wù)票據(jù):認(rèn)證服務(wù)器為應(yīng)用B生成一個(gè)新的服務(wù)票據(jù),并將用戶重定向回應(yīng)用B,與步驟4相同
-
驗(yàn)證新的服務(wù)票據(jù)并創(chuàng)建新的局部會(huì)話:與步驟5和6相同,應(yīng)用B驗(yàn)證新的服務(wù)票據(jù),并創(chuàng)建—個(gè)新的局部會(huì)話。
以上就是不同域的系統(tǒng)之間實(shí)現(xiàn)單點(diǎn)登錄的基本流程,常見的SSO協(xié)議和標(biāo)準(zhǔn),如OAuth2. 0,OpenID Connect,SAML等都遵循類似的流程。
單點(diǎn)退出
實(shí)現(xiàn)跨域單點(diǎn)登錄(Single Sign-On,SSO)的同時(shí),也需要考慮單點(diǎn)退出(Single Sign-Out,SSO)的問題。
單點(diǎn)退出意味著用戶在任何一個(gè)系統(tǒng)中退出后,其他所有系統(tǒng)也會(huì)同時(shí)退出。
以下是一種常見的基于Token或者Session的單點(diǎn)退出過程:文章來源:http://www.zghlxwxcb.cn/news/detail-448419.html
- 用戶在任何一個(gè)系統(tǒng)(System A)中點(diǎn)擊“退出”按鈕。
- System A收到退出請(qǐng)求,會(huì)先清除本地的用戶登錄狀態(tài)(如刪除Cookie或者清除Session),然后將退出請(qǐng)求發(fā)送到認(rèn)證中心(Authentication Center)。
- 認(rèn)證中心收到退出請(qǐng)求后,會(huì)清除該用戶的全局會(huì)話信息,并查看該用戶在其它系統(tǒng)(如System B, C, D)中的登錄狀態(tài)。
- 認(rèn)證中心向其他所有系統(tǒng)發(fā)送退出請(qǐng)求。
- System B, C, D等系統(tǒng)收到退出請(qǐng)求后,會(huì)清除各自的用戶登錄狀態(tài)。
- 所有系統(tǒng)都退出登錄狀態(tài)后,單點(diǎn)退出流程結(jié)束。
這種方式確保了用戶在任何一個(gè)系統(tǒng)中退出后,其他所有系統(tǒng)也都會(huì)退出。需要注意的是,實(shí)現(xiàn)這個(gè)功能需要各個(gè)系統(tǒng)之間有很好的通信機(jī)制,通常涉及到跨域請(qǐng)求的處理。另外,為了安全性,各種請(qǐng)求最好都是加密的,并且要有有效的錯(cuò)誤處理機(jī)制。文章來源地址http://www.zghlxwxcb.cn/news/detail-448419.html
到了這里,關(guān)于單點(diǎn)登錄 & 單點(diǎn)退出(chatgpt)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!