1. 程式人生 > >SSO 基於Cookie+fliter實現單點登入(SSO):工作原理

SSO 基於Cookie+fliter實現單點登入(SSO):工作原理

SSO的概念:

       單點登入SSO(Single Sign-On)是身份管理中的一部分。SSO的一種較為通俗的定義是:SSO是指訪問同一伺服器不同應用中的受保護資源的同一使用者,只需要登入一次,即通過一個應用中的安全驗證後,再訪問其他應用中的受保護資源時,不再需要重新登入驗證。

SSO的用途:

      目前的企業應用環境中,往往有很多的應用系統,淘寶、天貓、愛淘寶等等產品和如辦公自動化(OA)系統,財務管理系統,檔案管理系統,資訊查詢系統等等。這些應用系統服務於企業的資訊化建設,為企業帶來了很好的效益。但是,使用者在使用這些應用系統時,並不方便。使用者每次使用系統,都必須輸入使用者名稱稱和使用者密碼,進行身份驗證;而且應用系統不同,使用者賬號就不同,使用者必須同時牢記多套使用者名稱稱和使用者密碼。特別是對於應用系統數目較多,使用者數目也很多的企業,這個問題尤為突出。問題的原因並不是系統開發出現失誤,而是缺少整體規劃,缺乏統一的使用者登入平臺,使用SSO技術可以解決以上這些問題

SSO的好處:

  1. 方便使用者:從使用者實際使用角度考慮

          使用者使用應用系統時,能夠一次登入,多次使用。使用者不再需要每次輸入使用者名稱稱和使用者密碼,也不需要牢記多套使用者名稱稱和使用者密碼。單點登入平臺能夠改善使用者使用應用系統的體驗。 

  2. 方便管理員:從日常維護管理角度考慮
          系統管理員只需要維護一套統一的使用者賬號,方便、簡單。相比之下,系統管理員以前需要管理很多套的使用者賬號。每一個應用系統就有一套使用者賬號,不僅給管理上帶來不方便,而且,也容易出現管理漏洞。
  3. 簡化應用系統開發:從應用擴充套件角度考慮 
          開發新的應用系統時,可以直接使用單點登入平臺的使用者認證服務,簡化開發流程。單點登入平臺通過提供統一的認證平臺,實現單點登入。因此,應用系統並不需要開發使用者認證程式。   

SSO架構及原理:

     單點登入的實質就是安全上下文(Security Context)或憑證(Credential)在多個應用系統之間的傳遞或共享。當用戶登入系統時,客戶端根據使用者的憑證(例如使用者名稱和密碼)為使用者建立一個安全上下文,安全上下文包含用於驗證使用者的安全資訊,系統用這個安全上下文和安全策略來判斷使用者是否具有訪問系統資源的許可權。

單點登入SSO(Single Sign On)說得簡單點就是在一個多系統共存的環境下,使用者在一處登入後,就不用在其他系統中登入,也就是使用者的一次登入能得到其他所有系統的信任。單點登入在大型網站裡使用得非常頻繁,例如像阿里巴巴這樣的網站,在網站的背後是成百上千的子系統,使用者一次操作或交易可能涉及到幾十個子系統的協作,如果每個子系統都需要使用者認證,不僅使用者會瘋掉,各子系統也會為這種重複認證授權的邏輯搞瘋掉。實現單點登入說到底就是要解決如何產生和儲存那個信任,再就是其他系統如何驗證這個信任的有效性,因此要點也就以下幾個:

  • 儲存信任
  • 驗證信任

不然發現以上的方案是把信任儲存在客戶端的Cookie裡,這種方法雖然實現方便但立馬會讓人質疑兩個問題:

  • Cookie不安全
  • 不能跨域免登

SSO的技術:

                  第一:Cookie+filter

        利用瀏覽同域名之間自動傳遞cookies機制,實現兩個域名之間系統令牌傳遞問題;另外,關於跨域問題,雖然cookies本身不跨域,但可以利用它實現跨域的SSO。如:代理、暴露SSO令牌值等。

                 第二:基於CAS的sso