https://blog.csdn.net/xiaoguan_liu/article/details/91492110
什么是單點登錄及解決方法
1.怎么是單點登錄?
單點登錄SSO(Single Sign On)說得簡單點就是在一個多系統共存的環境下,用戶在一處登錄后,就不用在其他系統中登錄,也就是用戶的一次登錄能得到其他所有系統的信任。單點登錄在大型網站里使用得非常頻繁,例如像阿里巴巴這樣的網站,在網站的背后是成百上千的子系統,用戶一次操作或交易可能涉及到幾十個子系統的協作,如果每個子系統都需要用戶認證,不僅用戶會瘋掉,各子系統也會為這種重復認證授權的邏輯搞瘋掉。實現單點登錄說到底就是要解決如何產生和存儲那個信任,再就是其他系統如何驗證這個信任的有效性,因此要點也就以下兩個:
- 存儲信任
- 驗證信任
2.解決單點登錄的方法?
-
cookie+session+Redis
-
使用獨立登錄系統
-
JWT
2.1 cookie+session+Redis
最簡單的單點登錄實現方式,是使用cookie作為媒介,存放用戶憑證。用戶登錄父應用之后,應用返回一個加密的cookie,當用戶訪問子應用的時候,攜帶上這個cookie,授權應用解密cookie並進行校驗,校驗通過則登錄當前用戶。
2.2 使用獨立登錄系統
一般說來,大型應用會把授權的邏輯與用戶信息的相關邏輯獨立成一個應用,稱為用戶中心。用戶中心不處理業務邏輯,只是處理用戶信息的管理以及授權給第三方應用。第三方應用需要登錄的時候,則把用戶的登錄請求轉發給用戶中心進行處理,用戶處理完畢返回憑證,第三方應用驗證憑證,通過后就登錄用戶。
2.3 JWT
JWT相關操作可以參考博客:https://www.cnblogs.com/tjw-bk/p/13770378.html
cookie+session+Redis和JWT的區別:
cookie+session+Redis需要存儲用戶憑證 因此需要占用系統資源 而JWT則不需要存儲