概念
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認證中心不是前后端分離的,就是前端代碼和后端代碼部署在一個專案中,
為什么用這兩種情況呢?
其實就是為了,在流程圖上出現這兩種情況,這樣的清楚了,后期改成任何一種就都清楚了,
這里我還準備了一分學習圖和資料,如下:

鏈接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取碼:x2p5
免費分享,但是X度限制嚴重,如若鏈接失效點擊鏈接或搜索加群 群號518475424,
試想一下:
三個系統都是前后端分離的情況,流程圖應該怎么調整?
三個系統都不是前后端分離的情況,流程圖應該怎么調整?
對外介面
系統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權限認證,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/117796.html
標籤:PHP
