1. 程式人生 > >sso單點登入系統(解決session共享)

sso單點登入系統(解決session共享)

場景:假設一個使用者將自己的登入資訊提交到後臺,如果session儲存的資訊分佈在多臺機器上,並且不共享,那麼可能導致使用者的登入資訊出現短暫的丟失,為什麼這樣講,因為使用者訪問伺服器中間還要經過負載均衡伺服器,負載均衡採用輪詢的方式轉發使用者的登入請求。有可能訪問到的那臺機器使用者恰好沒有往伺服器提交資訊,導致資訊出現短暫性丟失。這時一般有兩種解決方案。

一.配置session叢集(也就是tomcat伺服器叢集),讓多臺伺服器共享同一個session並且同步,那麼使用者的登入資訊就不會丟失。但是隨著使用者數量的增加,叢集的效能就會下降

建議在5臺一下的場景使用。

二.搭建單點登入系統,向外提供服務介面,將session資料儲存在redis中,redis中的key可以設定資訊的過期時間,而且訪問速度快,效率高。模擬使用者登入與查詢訂單的流程。

1.使用者向sso系統發起登入請求 2.系統跳轉登入介面 3action接收使用者的引數 4後臺根據使用者名稱從資料庫中查密碼 5.如果密碼正確,生成一個token(令牌),並將使用者的資訊儲存到redis中,設定過期時間 6返回登入成功的介面 ,將token寫入cookie 7使用者訪問訂單系統 ,請求查詢訂單 8從cookie中取token查詢,呼叫sso單點登入系統的服務,根據token查詢使用者的資訊 9 接收token,從redis中查詢token的值是否存在或者是否過期,如果有效,直接返回訂單資訊。

sso單點登入系統是解決企業業務整合的比較流行的方案之一,使用者可以一次登入,可以訪問多個不停的業務系統而不需要重新登入。而且可以通過redis解決分散式環境下session共享的難題。僅代表個人的一些見解,希望有需要的一起學習共同進步!