系統的講解 - SSO單點登陸

概念

SSO 英文全稱 Single Sign On,單點登陸。

在多個應用系統中,只須要登陸一次,就能夠訪問其餘相互信任的應用系統。

好比:淘寶網(www.taobao.com),天貓網(www.tmall.com),聚划算(ju.taobao.com),飛豬網(www.fliggy.com)等,這些都是阿里巴巴集團的網站。在這些網站中,咱們在其中一個網站登陸了,再訪問其餘的網站時,就無需再進行登陸,這就是 SSO 的主要用途。
好處
用戶角度

用戶可以作到一次登陸屢次使用,無需記錄多套用戶名和密碼,省心。
系統管理員角度

管理員只需維護好一個統一的帳號中心就能夠了,方便。
新系統開發角度

新系統開發時只需直接對接統一的帳號中心便可,簡化開發流程,省時。
技術實現
流程圖

流程介紹

若是沒這個介紹,看上圖確定是懵懵的。

系統A和系統B都是先後端分離的,好比前端框架用的 React / Vue / Angular,都是經過 NPM 編譯後獨立部署的,先後端徹底經過HTTP接口的方式進行交互,也有可能先後端項目的域名都不同。

SSO認證中心不是先後端分離的,就是前端代碼和後端代碼部署在一個項目中。

爲何用這兩種狀況呢?

其實就是爲了,在流程圖上出現這兩種狀況,這樣的清楚了,後期改爲任何一種就都清楚了。

試想一下:

三個系統都是先後端分離的狀況,流程圖應該怎麼調整?

三個系統都不是先後端分離的狀況,流程圖應該怎麼調整?
對外接口

系統A和系統B:用戶退出接口。

SSO 認證中心:用戶退出接口和token驗證接口。
登陸

如上述流程圖一致。

系統A和系統B:使用token認證登陸。

SSO 認證中心:使用會話認證登陸。

先後端分離項目,登陸使用token進行解決,前端每次請求接口時都必須傳遞token參數。
退出

上圖,表示的是從某一個系統退出的流程圖。

退出,還能夠從SSO認證中心退出,而後調取各個系統的用戶退出接口。

當用戶再進行操做的時候,就會跳轉到SSO的登陸界面。
Token 生成方式

建立全局會話可使用session,將session存儲到redis中。

令牌的生成可使用JWT。

PHP JWT參考地址:https://github.com/lcobucci/jwt

固然還能夠自定義token的生成方式。
小結

講解了什麼是SSO,以及SSO的用途與好處,同時根據流程圖一步步進行梳理,基本上就能夠實現了。

期間遇到任何問題,均可以關注公衆號和我進行交流。
擴展
SSO與OAuth的區別

談到SSO不少人就想到OAuth,也有談到OAuth想到SSO的,在這裏我簡單的說一下區別。

通俗的解釋,SSO是處理一個公司內的不一樣應用系統之間的登陸問題,好比阿里巴巴旗下有不少應用系統,咱們只須要登陸一個系統就能夠實現不一樣系統之間的跳轉。

OAuth是不一樣公司遵循的一種受權方案,也是一種受權協議,一般都是由大公司提供,好比騰訊,微博。咱們經常使用的QQ登陸,微博登陸等,使用OAuth的好處是可使用其餘第三方帳號進行登陸系統,減小了因用戶懶,不肯註冊而致使用戶流失的風險。

如今一些支付業務也用OAuth,好比微信支付,支付寶支付。

還有一些開放平臺也用OAuth,好比百度開放平臺,騰訊開放平臺。
SSO與RBAC的關係

若是企業有多個管理系統,現由原來的每一個系統都有一個登陸,調整爲統一登陸認證。

那麼每一個管理系統都有權限控制,吸收統一登陸認證的經驗,咱們也能夠作一套統一的RBAC權限認證。

前端

相關文章
相關標籤/搜索