多個(gè)系統(tǒng)間是怎么保證統(tǒng)一登錄的

以下文章來源于公眾號(hào)新亮筆記 ,作者訢亮

概念

SSO 英文全稱 Single Sign On,單點(diǎn)登錄。

在多個(gè)應(yīng)用系統(tǒng)中,只需要登錄一次,就可以訪問其他相互信任的應(yīng)用系統(tǒng)。

比如:淘寶網(wǎng)(www.taobao.com),天貓網(wǎng)(www.tmall.com),聚劃算(ju.taobao.com),飛豬網(wǎng)(www.fliggy.com)等,這些都是阿里巴巴集團(tuán)的網(wǎng)站。在這些網(wǎng)站中,我們?cè)谄渲幸粋€(gè)網(wǎng)站登錄了,再訪問其他的網(wǎng)站時(shí),就無需再進(jìn)行登錄,這就是 SSO 的主要用途。

好處

用戶角度

用戶能夠做到一次登錄多次使用,無需記錄多套用戶名和密碼,省心。

系統(tǒng)管理員角度

管理員只需維護(hù)好一個(gè)統(tǒng)一的賬號(hào)中心就可以了,方便。

新系統(tǒng)開發(fā)角度

新系統(tǒng)開發(fā)時(shí)只需直接對(duì)接統(tǒng)一的賬號(hào)中心即可,簡(jiǎn)化開發(fā)流程,省時(shí)。

技術(shù)實(shí)現(xiàn)

流程圖

image

流程介紹

如果沒這個(gè)介紹,看上圖肯定是懵懵的。

系統(tǒng)A和系統(tǒng)B都是前后端分離的,比如前端框架用的 React / Vue / Angular,都是通過 NPM 編譯后獨(dú)立部署的,前后端完全通過HTTP接口的方式進(jìn)行交互,也有可能前后端項(xiàng)目的域名都不一樣。

SSO認(rèn)證中心不是前后端分離的,就是前端代碼和后端代碼部署在一個(gè)項(xiàng)目中。

為什么用這兩種情況呢?

其實(shí)就是為了,在流程圖上出現(xiàn)這兩種情況,這樣的清楚了,后期改成任何一種就都清楚了。

試想一下:

三個(gè)系統(tǒng)都是前后端分離的情況,流程圖應(yīng)該怎么調(diào)整?

三個(gè)系統(tǒng)都不是前后端分離的情況,流程圖應(yīng)該怎么調(diào)整?

對(duì)外接口

系統(tǒng)A和系統(tǒng)B:用戶退出接口。

SSO 認(rèn)證中心:用戶退出接口和token驗(yàn)證接口。

登錄

如上述流程圖一致。

系統(tǒng)A和系統(tǒng)B:使用token認(rèn)證登錄。

SSO 認(rèn)證中心:使用會(huì)話認(rèn)證登錄。

前后端分離項(xiàng)目,登錄使用token進(jìn)行解決,前端每次請(qǐng)求接口時(shí)都必須傳遞token參數(shù)。

退出

image

上圖,表示的是從某一個(gè)系統(tǒng)退出的流程圖。

退出,還可以從SSO認(rèn)證中心退出,然后調(diào)取各個(gè)系統(tǒng)的用戶退出接口。

當(dāng)用戶再進(jìn)行操作的時(shí)候,就會(huì)跳轉(zhuǎn)到SSO的登錄界面。

Token 生成方式

創(chuàng)建全局會(huì)話可以使用session,將session存儲(chǔ)到redis中。

令牌的生成可以使用JWT。

小結(jié)

講解了什么是SSO,以及SSO的用途與好處,同時(shí)根據(jù)流程圖一步步進(jìn)行梳理,基本上就可以實(shí)現(xiàn)了。

期間遇到任何問題,都可以關(guān)注公眾號(hào)和我進(jìn)行交流。

擴(kuò)展

SSO與OAuth的區(qū)別

談到SSO很多人就想到OAuth,也有談到OAuth想到SSO的,在這里我簡(jiǎn)單的說一下區(qū)別。

通俗的解釋,SSO是處理一個(gè)公司內(nèi)的不同應(yīng)用系統(tǒng)之間的登錄問題,比如阿里巴巴旗下有很多應(yīng)用系統(tǒng),我們只需要登錄一個(gè)系統(tǒng)就可以實(shí)現(xiàn)不同系統(tǒng)之間的跳轉(zhuǎn)。

OAuth是不同公司遵循的一種授權(quán)方案,也是一種授權(quán)協(xié)議,通常都是由大公司提供,比如騰訊,微博。我們常用的QQ登錄,微博登錄等,使用OAuth的好處是可以使用其他第三方賬號(hào)進(jìn)行登錄系統(tǒng),減少了因用戶懶,不愿注冊(cè)而導(dǎo)致用戶流失的風(fēng)險(xiǎn)。

現(xiàn)在一些支付業(yè)務(wù)也用OAuth,比如微信支付,支付寶支付。

還有一些開放平臺(tái)也用OAuth,比如百度開放平臺(tái),騰訊開放平臺(tái)。

SSO與RBAC的關(guān)系

如果企業(yè)有多個(gè)管理系統(tǒng),現(xiàn)由原來的每個(gè)系統(tǒng)都有一個(gè)登錄,調(diào)整為統(tǒng)一登錄認(rèn)證。

那么每個(gè)管理系統(tǒng)都有權(quán)限控制,吸取統(tǒng)一登錄認(rèn)證的經(jīng)驗(yàn),我們也可以做一套統(tǒng)一的RBAC權(quán)限認(rèn)證。

本文原創(chuàng)作者新亮是一名 PHP 開發(fā)工程師,公眾號(hào)有大量關(guān)于PHP開發(fā)的文章,同時(shí)作者最近也在更新 go 語(yǔ)言入門系列文章,有興趣的伙伴們可以關(guān)注****。

?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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