單點登錄SSO(Single Sign-On)學習筆記

由 webmaster 在 四, 2011/12/29 - 19:59 發表

 

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

單點登陸的模式

DNN模式。也就是把各個子系統的界面都集成到一起,當到一個類似DNN一樣UI的容器管理器裡面,用這樣的方式,來實現一次登陸,然後在各個其他系統中繼續享有這個用戶登錄服務。其實這是採用一個WebApplication的方式。

類似微軟的passport,一次登陸之後,就可以在msn,hotmail,或者space中任其切換而不需要重新登陸。這一中模式就不是一個WebApplication了,而是在多個Application上的控制。

單點登錄(SSO)的實現原理

  1. 登陸點。理想的情況是用戶通過任何應用系統都能進行登陸,而且效果一樣。這種單一的登陸點在整個系統的設計中是唯一認證用戶的地方,由登陸點將相應的用戶信息傳遞給應用系統,應用系統利用這些信息來進行用戶的驗證。
  2. 應用系統的單點登錄(SSO)集成。並不是任何系統都能夠使用SSO,只有那些符合SSO規範,使用SSO API的應用系統才具有SSO的功能。簡單地說就是要修改已有的應用系統,屏蔽已有的應用系統的用戶認證模塊,使用系統提供的SSO API來驗證用戶,以及對用戶的操作進行授權。
  3. 統一的認證,權限信息庫。通常SSO要求有統一的認證,權限存放庫。但現實中,有的系統無法使用外部的認證,授權信息庫,所以就需要在應用系統和SSO認證系統之間進行認證,同時進行授權信息的數據同步。
    實現描述:在用戶成功通過SSO認證系統認證之後,系統提供的映射授予權限來為用戶登錄到其有權可以使用的應用系統。系統提供的映射取消用戶權限來實現用戶的註銷功能。

要實現SSO需要以下主要的功能

  1. 所有應用系統共享一個身份認證系統;
  2. 所有應用系統能夠識別和提取ticket信息;
  3. 應用系統能夠識別已經登錄過的用戶,能自動判斷當前用戶是否登錄過,從而完成單點登錄的功能。
其中,統一的身份認證系統最重要,認證系統的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功後,認證系統應該生成統一的認證標誌(ticket),返還給用戶。另外,認證系統還應該對ticket進行效驗,判斷其有效性。整個系統可以存在兩個以上的認證服務器,這些服務器甚至可以是不同的產品。認證服務器之間要通過標準的通訊協議,互相交換認證信息,就能完成更高級別的單點登錄。

使用SSO的好處主要有

  1. 方便用戶用戶使用應用系統時,能夠一次登錄,多次使用。用戶不再需要每次輸入用戶名稱和用戶密碼,也不需要牢記多套用戶名稱和用戶密碼。單點登錄平台能夠改善用戶使用應用系統的體驗。
  2. 方便管理員系統管理員只需要維護一套統一的用戶賬號,方便、簡單。相比之下,系統管理員以前需要管理很多套的用戶賬號。每一個應用系統就有一套用戶賬號,不僅給管理上帶來不方便,而且,也容易出現管理漏洞。
  3. 簡化應用系統開發開發新的應用系統時,可以直接使用單點登錄平台的用戶認證服務,簡化開發流程。單點登錄平台通過提供統一的認證平台,實現單點登錄。因此,應用系統並不需要開髮用戶認證程序。

實現SSO的技術主要有

  1. 基於cookies實現,需要注意如下幾點:如果是基於兩個域名之間傳遞sessionid的方法可能在windows中成立,在unix&linux中可能會出現問題;可以基於數據庫實現;在安全性方面可能會作更多的考慮。另外,關於跨域問題,雖然cookies本身不跨域,但可以利用它實現跨域的SSO。
  2. Broker-based(基於經紀人),例如Kerberos等;這種技術的特點就是,有一個集中的認證和用戶帳號管理的服務器。經紀人給被用於進一步請求的電子的身份存取。中央數據庫的使用減少了管理的代價,並為認證提供一個公共和獨立的”第三方”。例如Kerberos、Sesame、IBM KryptoKnight(憑證庫思想)等。
  3. Agent-based(基於代理) 在這種解決方案中,有一個自動地為不同的應用程序認證用戶身份的代理程序。這個代理程序需要設計有不同的功能。比如, 它可以使用口令表或加密密鑰來自動地將認證的負擔從用戶移開。代理被放在服務器上面,在服務器的認證系統和客戶端認證方法之間充當一個”翻譯”。例如SSH等。
  4. Token-based,例如SecurID、WebID、現在被廣泛使用的口令認證,比如FTP,郵件服務器的登錄認證,這是一種簡單易用的方式,實現一個口令在多種應用當中使用。
  5. 基於網關Agent and Broker-based。
  6. 基於安全斷言標記語言(SAML)實現,SAML(Security Assertion Markup Language,安全斷言標記語言)的出現大大簡化了SSO,並被OASIS批准為SSO的執行標準。開源組織OpenSAML 實現了SAML 規範,可參考http//www.opensaml.org

本文來自:http://www.biaodianfu.com/learn-sso.html 

Read more >>

關於EC ONE ECONE-top-right.png