單點登錄(一)cas概念+原理

一、關鍵字:

        sso域名:https://www.talkingdata.net:8446/

        登錄地址:https://www.talkingdata.net:8446/login

        登錄地址(遠程登錄):https://www.talkingdata.net:8446/remoteLogin

        退出地址:https://www.talkingdata.net:8446/logout

        語言參數:locale=zh_CN,locale=en

二、什麼是sso

        a) 所謂SSOSingle Sign On)單點登錄是指基於用戶/會話認證的一個過程,用戶只需一次性提供憑證(僅一次登錄),就可以訪問多個應用。而不需要訪問每個應用時,都重新輸入密碼。

        b) SSO的實現機制不盡相同,大體分爲Cookie機制和Session機制兩大類。

        WebLogic通過Session共享認證信息。Session是一種服務器端機制,當客戶端訪問服務器時,服務器爲客戶端創建一個惟一的SessionID,以使在整個交互過程中始終保持狀態,而交互的信息則可由應用自行指定,因此用Session方式實現SSO,不能在多個瀏覽器之間實現單點登錄,但卻可以跨域。

        WebSphere通過Cookie記錄認證信息。Cookie是一種客戶端機制,它存儲的內容主要包括: 名字、值、過期時間、路徑和域,路徑與域合在一起就構成了Cookie的作用範圍,因此用Cookie方式可實現SSO,但域名必須相同。

        目前大部分SSO產品採用的是Cookie機制,目前能夠找到的最好的開源單點登錄產品CAS也是採用Cookie機制。也是我們這次SSO開發的參照產品。CAS 可以很簡單的實現跨域的 SSO ,因爲,單點被控制在 CAS Server ,用戶最有價值的 TGC-Cookie 只是跟 CAS Server 相關, CAS Server 就只有一個,因此,解決了 cookies 不能跨域的問題。

三、環境

        jetty+ssl

四、cas原理

        CAS從結構上來說包括倆部分,分別是CAS ServerCAS Client

        CAS Server需要獨立部署,主要負責認證工作,CAS Client負責處理對客戶端訪問受限資源的訪問請求,當針對該資源的訪問需要登錄時重定向到CAS ServerCAS Client 與受保護的客戶端應用部署在一起,以 Filter 方式保護受保護的資源。


圖 1 使用Cookie實現單點登錄的原理圖


圖2 cas瀏覽器請求序列圖

    ·首先,單點登錄分爲“服務端”和“客戶端”。服務端就是單點登錄服務器,而客戶端需要使用單點登錄的應用程序,需要把客戶端插件安裝到自己的系統中,單點登錄的客戶端通常替換了原來應用程序的認證部分的代碼。

    ·某個應用程序首先要發起第1次認證。大部分情況下,應用程序中嵌入的客戶端會把應用程序原來的登錄畫面屏蔽掉,而直接轉到單點登錄服務器的登錄頁面。

    ·用戶在單點登錄服務器的登錄頁面中,輸入用戶名和密碼。

    ·然後單點登錄服務器會對用戶名和密碼進行認證。認證本身並不是單點登錄服務器的功能.

    ·認證通過之後,單點登錄服務器會和應用程序進行一個比較複雜的交互,這通常是某種授權機制。CAS使用的是所謂的Ticket.

    ·授權完成後,CAS把頁面重定向,回到Web應用。Web應用此時就完成了成功的登錄(當然這也是單點登錄的客戶端,根據返回的Ticket信息進行判斷成功的)。

   ·然後單點登錄服務器會在客戶端創建一個Cookie。注意,是在用戶的客戶端,而不是服務端創建一個Cookie。這個Cookie是一個加密的Cookie,其中保存了用戶登錄的信息。

    ·如果用戶此時希望進入其他Web應用程序,則安裝在這些應用程序中的單點登錄客戶端,首先仍然會重定向到CAS服務器。不過此時CAS服務器不再要求用戶輸入用戶名和密碼,而是首先自動尋找Cookie,根據Cookie中保存的信息,進行登錄。登錄之後,CAS重定向回到用戶的應用程序。

這樣,就不再需要用戶繼續輸入用戶名和密碼,從而實現了單點登錄。

注意,這種單點登錄體系中,並沒有通過http進行密碼的傳遞(但是有用戶名的傳遞),因此是十分安全的。

 

這裏要說明一點,單一用戶,統一用戶和單點登錄是不同的三個概念

統一用戶就是指不同的系統,使用同一套用戶處理的機制。

    ·用戶ID全局惟一,用戶登錄名,密碼全局唯一,並且統一存儲在單一系統中。

    · 用戶的一些屬性,如姓名、電話、地址、郵件等,統一存儲在單一系統中。儘管各應用系統還可以自行增加一些屬性,但是基本的屬性應該統一存儲和管理。

     ·應用系統不應該直接對用戶信息的進行增加、修改和刪除,但是可以進行查詢。對用戶信息的增加、修改和刪除,應該由專門的系統進行統一的管理。

很顯然,統一用戶是單點登錄的基礎,但是統一用戶並不意味着實現了單點登錄

 

單一用戶管理則指所有的用戶管理工作都在唯一的地方進行處理,而每個應用程序不再保留自己的用戶管理功能。單一用戶管理和統一用戶管理的最大區別在於,統一用戶管理之後,每個應用程序仍然保留自己的用戶管理功能,用於額外的屬性設置;而單一用戶管理時,每個應用程序不再保留自己的用戶管理功能。


參考:

http://www.cnblogs.com/hellowood/archive/2010/08/05/1793364.html

http://www.cnblogs.com/shanyou/archive/2009/08/30/1556659.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章