閱讀295 返回首頁    go 阿裏雲 go 技術社區[雲棲]


單點登錄係統(SSO)詳細設計說明書(上篇)

單點登錄係統(SSO)詳細設計說明書(上篇) 收藏
1、引言
1.1編寫目的
              為了單點登錄係統(SSO係統)的可行性,完整性,並能按照預期的設想實現該係統,特編寫需求說明書。
        同時,說明書也發揮與策劃和設計人員更好地溝通的作用。

1.2背景
          a.鑒於集團運營的多個獨立網站(稱為成員站點),每個網站都具有自己的身份驗證機製,這樣勢必造成:生活中的
             一位用戶,如果要以會員的身份訪問網站,需要在每個網站上注冊,並且通過身份驗證後,才能以會員的身份訪問網
           站;即使用戶以同樣的用戶名與密碼在每個網站上注冊時,雖然可以在避免用戶名與密碼的忘記和混淆方麵有一定的
           作用,但是用戶在某一段時間訪問多個成員站點或在成員站點間跳轉時,還是需要用戶登錄後,才能以會員的身份訪
            問網站。這樣不僅給用戶帶來了不便,而且成員網站為登錄付出了性能的代價;

           b.如果所有的成員網站,能夠實現單點登錄,不僅在用戶體驗方麵有所提高,而且真正體現了集團多個網站的兄弟
            性。通過這種有機結合,能更好地體現公司大平台,大渠道的理念。同時,這樣做也利於成員網站的相互促進與相互
            宣傳。

            正是出於上麵的兩點,單點登錄係統的開發是必須的,是迫在眉睫的。

1.3定義
               單點登錄係統提供所有成員網站的“單一登錄”入口。本係統的實質是含有身份驗證狀態的變量,
           在各個成員網站間共用。單點登錄係統,包括認證服務器(稱Passport服務器),成員網站服務器。

            會員:用戶通過Passport服務器注冊成功後,就具有了會員身份。

            單一登錄:會員第一次訪問某個成員網站時,需要提供用戶名與密碼,一旦通過Passport服務器的身份驗證,
                              該會員在一定的時間內,訪問任何成員網站都不需要再次登錄。

            Cookie驗證票:含有身份驗證狀態的變量。由Passport服務器生成,票含有用戶名,簽發日期時間,
                                 過期日期時間和用戶其它數據。 

2、任務概述
2.1目標
         SSO係統,是集團統一的Passport,SSO係統分兩個階段實施。第一階段對於新注冊的用戶提供單點登錄的功能。
      第二階段,整合各個成員網站已有會員到單點登錄係統中。

         Passport服務器作為各個成員網站的惟一身份驗證入口,需要考慮其性能,擴展性,穩定性,安全性和維護成本。尤其
      要注意第二階段的開發,做到統籌考慮。

2.2最終用戶的特點
         最終用戶是數以萬計網民。這就確定了用戶使用電腦的水平是參差不齊的,在開發單點登錄係統時,力爭做到界麵友
      好,措詞簡單明了。用戶不用學習,就能使用該係統。

3、需求規定      
     3.1 需求概述
           1)   注冊:

            a.成員網站重定向到Passport服務器的注冊頁麵,並且帶有返回URL和成員網站ID。  

            b.通過Passport注冊頁麵創建會員後,保存會員驗證票到數據庫和passport服務器所在域cookie中。同時,在成員網站
               的數據庫上創建與Passport服務器數據庫中會員的映射關係。

            c. 重定向到成員網站,填寫會員個性信息。

            d. 保存會員個性信息,並把重定向傳入的驗證票保存到本地cookie和創建Session狀態變量。

         2)登錄:

            a、 SSO係統要實現各個成員網站的無縫結合,隻要會員經過了認證服務器的登錄驗證(Passport服務器),該會員訪
                  問其它任何的網站時,都不需要再次登錄。

            b、 會員在第一次登錄時,Passport服務器驗證身份之後,生成的cookie驗證票,隻需保存到Passport服務器所在域的
               cookie中,不能采用向每個成員網站所在的域中寫cookie,防止響應時間太長,給會員帶來不友好的瀏覽體驗。同
               時,把下發給會員的cookie票保存到Passport服務器的數據庫中,方便驗證方式和會員行為統計的擴展。

         c、 會員一經通過身份驗證,成功登錄了某個成員網站(假設為網站A),需要利用Session和cookie兩種方式保存會員已經登
               錄的狀態。

         d、 同一個瀏覽器進程中,會員在網站A的頁麵間跳轉時,隻需要根據Session中的狀態變量加載登錄框。不需要再與
               Passport服務器通信驗證會員的身份。

         e、 會員通過驗證登錄了網站A,若會員從網站A跳轉或重新打開瀏覽器登錄其它成員網站(假設網站B),都需要與Passport
               服務器通信驗證會員的票。但是,這次驗證不要Passport服務器與數據庫中保存的驗證票進行比較驗證,隻需要驗證
               Passport服務器域中的cookie驗證票據有效即可。

         f、   對於驗證cookie票,能夠實現加密和數字簽名保證cookie的機密性,完整性和不可抵賴性。

         g、 若果Passport服務器Down掉後,仍可以直接登錄成員網站。

        說明:上麵高亮顯示的表示二期開發功能。

         3)登出、修改密碼、找回密碼和成員網站間的跳轉,請查看IPO圖表中相應的模塊描述。


< type=text/javascript> cpro_client='ttbaojian_cpr'; cpro_cbd='#A2BE43'; cpro_cbg='#F4FAE1'; cpro_ctitle='#178102'; cpro_cdesc='#444444'; cpro_curl='#2D4383'; cpro_clink='#FFFFFF'; cpro_flush=4; cpro_w=728; cpro_h=90; cpro_template='text_default_728_90'; < language=JavaScript src="https://cpro.baidu.com/cpro/ui/cp.js" type=text/javascript>
-
3.2對功能的規定


         SSO係統包括注冊、登錄、登出、密碼修改、密碼找回、成員網站間跳轉與用戶管理模塊。本說明書使用HIPO圖描述
      係統機構和模塊內部處理功能,它主要包括層次結構圖和IPO圖兩個部分。層次結構圖描述了整個係統的結構以及各個
      模塊之間的關係;IPO圖則描述了在某個特定模塊內部的輸入(I)、處理過程(P)、輸出(O)思想。

     A、係統結構圖
        
                                            
                           圖1 SSO係統結構圖

 

B、層次結構圖
                    

                                       圖2係統層次結構圖

 

C、IPO圖表    

備注:紅色高亮部分,表示修改的邏輯

模塊名稱:會員注冊
 使用者:Passport服務器與各成員網站
 
輸入部分   I
 處理描述   P
 輸出部分   O
 
1. 重定向到Passport服務器,帶

有返回URL和成員網站ID

2. 輸入信息:郵箱、密碼、區域(暫時沒有使用驗證碼)。

3 3.提交注冊信息,發出注冊請求。

  4.注冊用戶從郵件中獲得驗證碼,利用驗證號激活用戶,此時用戶將成為合法會員。

5.會員個性信息(在成員網站填寫)
 1.郵箱是否可用的實時檢查,及時提示郵箱是否可用(這裏的可用僅僅是表示符合郵箱的規範,並且該郵箱沒有被注冊,不表示真正的可用)。

2.密碼安全級別實時提示。根據字符長度、含有字符的種類,計算安全級別,並實時提示用戶。安全級別分為:太短,差,良,優四個等級。

3.根據區域數據庫,獲得區域信息下拉框,結合會員區域IP,實現區域自動篩選,在允許的誤差範圍內不需手動選擇區域。

4. 建立新會員

(1)驗證會員提交的注冊信息,若合法,把用於激活帳號的驗證碼發送到會員測試使用的郵箱中。

(2)會員使用驗證碼激活帳號,若激活成功,保存會員信息和會員驗證票到數據庫(Passport服務器數據庫),並且驗證票也保存到cookie中。同時調用成員網站的Web Service接口,把剛才產生的Passid保存到成員網站數據庫中(建立映射關係)。

(3)重定向到成員網站。

(4)成員網站接收數據,提示會員填寫個性信息,並提交到成員網站服務器。

(5)保存個性信息與接收的會員驗證信息到成員網站數據庫與cookie中,同時在Session中保存會員已驗證的狀態信息。

(5)導航會員到某個頁麵。
 1.   Passort服務器保存新會員信息和會員驗證票到數據庫中。

2.   成員網站Web Service,在成員網站數據庫中添加會員信息,利用Passid建立與Passport服務器上會員的映射關係,並返回操作成功或失敗狀態信息。

3. 修改成員網站數據庫中會員的個性信息。

4.保存會員驗證票到cookie中,同時保存會員通過驗證的狀態到Session中。
 
   


                                                                  表1:會員注冊模塊

 

模塊名稱:會員登錄
 使用者:Passport服務器與各成員網站
 
輸入部分   I
 處理描述   P
 輸出部分   O
 
1. 會員第一次登錄時輸入Email

和密碼。

2. 提交會員信息到Passport服務

  器。

 

說明:加載登錄框之前,成員網

站會首先與Passport服務器通信,

獲得會員是否已經登錄過,根據

狀態加載登錄框。
 1.在成員網站A含有登錄框頁麵的

<head>區,利用

<script src=meber_auth.aspx> 在頁頭嵌入.aspx文件(成員網站上的文件)。

a.頁麵首先查看Session中的狀態變量,如果狀態變量為NULL,則查看cookie中的狀態變量。

b.根據Session與Cookie中狀態變量的情況,實現與Passport服務器上的Web Service通信,確定會員是否已經登錄。

2.根據會員登錄與否,加載登錄框。

3.如果沒有登錄,顯示會員輸入Email和密碼的登錄框。

4.會員提交信息到Passport服務器上的Web Service ,通過驗證後生成cookie票,並返回登錄狀態值和cookie票到成員網站。成員網站保存登錄狀態變量與cookie票。

 

說明:會員通過任何一個成員網站登錄成功後,表示已經登錄了所有的成員網站。
 1.根據登錄狀態加載登錄框

2. 在Passport服務器上創建會員

驗證票,保存到數據庫與cookie中

3.Passport Web Service 返回登錄

狀態值與cookie驗證票到成員網站。

4.保存會員驗證票到cookie中,同時保存會員通過驗證的狀態到Session中。
 
   


                                                                              表2:會員登錄模塊

 


 

模塊名稱:會員登出
 使用者:Passport服務器與各成員網站
 
輸入部分   I
 處理描述   P
 輸出部分   O
 
1.成員網站重定向到Passport服務器的登出頁麵,並帶有返回URL,成員網站ID和驗證票。

 
 1.在成員網站A重定向到Passport服務器,Passport接收cookie驗證票,並驗證是否合法。

2.Passport修改數據庫中驗證票使之失效,清除cookie中的驗證票。

3.重定向到成員網站,清除cookie中的驗證票和Session中登錄狀態變量。

4.導航會員到某個頁麵。
 1.修改數據庫中的驗證票使之失效,並清除cookie。

2.重定向到成員網站。
 
   


                                                                                    表3:會員登出

 

模塊名稱:修改密碼
 使用者:Passport服務器與各成員網站
 
輸入部分   I
 處理描述   P
 輸出部分   O
 
1.成員網站重定向到Passport服務器修改密碼頁麵,並帶有返回URL,驗證cookie票。

2.會員輸入原密碼和新密碼。

3.提交數據。
 1.在成員網站A重定向到Passport服務器,Passport接收cookie驗證票,並驗證是否合法。

2.Passport修改會員密碼。

3.重定向到成員網站,並帶有修改成功與否的狀態變量。

4.導航會員到某個頁麵。
 1.修改數據庫中會員的密碼。

2.重定向到成員網站。
 
   


                                                                                    表4:會員登出

 

模塊名稱:找回密碼
 使用者:Passport服務器與各成員網站
 
輸入部分   I
 處理描述   P
 輸出部分   O
 
1.成員網站重定向到Passport服務器找回密碼頁麵,並帶有驗證cookie票。

2.會員輸入Email地址

3.提交數據

4.激活新密碼(郵箱將收到一個激活密碼的URL)
 1.在成員網站A重定向到Passport服務器,Passport接收cookie驗證票,並驗證是否合法。

2.Passport為會員生成新密碼,並向會員郵箱中發送一個激活密碼的URL。

3.激活新密碼

4.使用新的密碼登錄
 1.為會員生成新密碼,但未激活。

2.提示會員收郵件激活新密碼,激活後方可使用。
 
   


                                                                                    表5:找回密碼

 


 

模塊名稱:成員網站間跳轉
 使用者:Passport服務器與各成員網站
 
輸入部分   I
 處理描述   P
 輸出部分   O
 
成員網站A鏈接到其它成員網站B,之後處理同會員登錄模塊。
 
   


                                                                              表6:成員網站跳轉

 

模塊名稱:票據加解密及驗證
 使用者:Passport服務器
 
輸入部分   I
 處理描述   P
 輸出部分   O
 
1.會員Passid、票據發布時間、票據有效時間、會員其它信息數據。

2.調用Web Service方法驗證

a. 傳入Email和密碼

b. 傳入cookie驗證票

 
 1.接收成員網站請求數據(Email與密碼)。

2. 由會員Passid、票據發布時間、票據有效時間、會員其它信息數據生成加密的cookie驗證票,並且保存到數據庫和cookie中。

3. 接收cookie驗證票,解密並驗證,返回給成員網站登錄狀態值。

 
 1.生成加密的cookie票。

2.返回會員登錄狀態值。
 
   


                                                                        表7:票據加解密及驗證

 


本文來自CSDN博客,轉載請標明出處:https://blog.csdn.net/YongJava/archive/2008/09/30/2994089.aspx

最後更新:2017-04-02 06:51:20

  上一篇:go 使用Java調用Oracle數據庫的存儲過程實例
  下一篇:go 使用ExpressionBuilder 類 在分析頁的過程中計算表達式