1. 程式人生 > >單點登入系統設計分析

單點登入系統設計分析

什麼是SSO

SSO英文全稱Single Sign On,單點登入。SSO是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登入對映到其他應用中用於同一個使用者的登入的機制。它是目前比較流行的企業業務整合的解決方案之一。

傳統的登入流程

這裡寫圖片描述

傳統流程中的問題

在叢集環境中。需要把同一套程式碼部署到多臺伺服器上。每個工程都有自己獨立的session。

在叢集環境中每個工程都有自己的session,如果把使用者資訊寫入session而不共享的話,會出現使用者反覆登入的情況。

解決方案

第一種方案

可以配置tomcat的session共享

。配置tomcat叢集。Tomcat配置好集群后,會不停的向叢集中其他的tomcat廣播自己的session資訊。其他的tomcat做session同步。可以保證所有的tomcatsession中的內容都是一致的。

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

第二種方案

實現單點登入系統,提供服務介面。把session資料存放在redis。
Redis可以設定key的生存時間、訪問速度快效率高。
優點:redis存取速度快,不會出現多個節點session複製的問題。效率高。
缺點:需要程式設計師開發。

單點登入系統流程

這裡寫圖片描述