1. 程式人生 > >單點登入系統流程

單點登入系統流程

什麼是單點登入系統 (Single Sign On)?
在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。
1. 單點登入系統(SSO):
a)建立單點登入系統,獨立的工程
b)釋出登入和註冊介面
c)本公司的一個系統中,只調用一個登入頁面
實現系統登入和註冊的功能。


傳統的登入流程:
在傳統的登入中所出現的問題:
a)在叢集環境中,需要把同一套程式碼部署到多臺伺服器中,每個工程獨有自己獨立的session。

這裡寫圖片描述


如果把使用者資訊寫入session中而不共享的話,就會出現使用者反覆登入的情況。
解決方案:
第一種方案:可以配置tomcat的session共享,配置tomcat叢集。叢集配置好之後,會不停的向其他的tomcat廣播自己的session資訊,其他的tomcat做session同步,可以保證所有的tomcat的session中的內容是一致的。


缺點:  (a.)tomcat 是全域性session複製,叢集內每個tomcat的session完全同步(也就是任何時候都完全一樣的) 在大規模應用的時候,使用者過多,叢集內tomcat數量過多,session的全域性複製會導致叢集效能下降, 因此,tomcat的數量不能太多,5個以下為好。
              (b.)不能解決分散式工程的session共享問題。例如支付寶和淘寶單點登入的問題。

第二種方案:實現單點登入系統,提供服務介面。把session資料存放在redis。redis可以設定key的生存時間,訪問速度快效率高。
單點登入登入系統由一套登入頁面來維護。

流程簡述:使用者請求登入頁面,SSO系統接收使用者資訊,從資料庫中獲取資訊,判斷是否正確,使用者認證,生成token,將資訊儲存至redis中設定有效期,返回登陸成功,把token寫入cookie,如果有回撥url,跳轉到回撥url。


接收cookie中的token,並根據token查redis,如果token存在,可以順便調整生存時間,顯示請求頁面,否則返回登入頁面。


建立單點登入系統(獨立的工程,需要操作redis,連線資料庫):
系統架構:

需要使用的技術:1)Mybatis; 2)Spring ; 3)Springmvc; 4)Redis;