天天看點

單點登入系統(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圖表中相應的子產品描述。

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:會員注冊子產品

子產品名稱:會員登入

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驗證票到成員網站。

                                                                                 表2:會員登入子產品

子產品名稱:會員登出
1.成員網站重定向到Passport伺服器的登出頁面,并帶有傳回URL,成員網站ID和驗證票。

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

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

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

4.導航會員到某個頁面。

1.修改資料庫中的驗證票使之失效,并清除cookie。

2.重定向到成員網站。

                                                                                       表3:會員登出

子產品名稱:修改密碼

1.成員網站重定向到Passport伺服器修改密碼頁面,并帶有傳回URL,驗證cookie票。

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

3.送出資料。

2.Passport修改會員密碼。

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

1.修改資料庫中會員的密碼。

                                                                                       表4:會員登出

子產品名稱:找回密碼

1.成員網站重定向到Passport伺服器找回密碼頁面,并帶有驗證cookie票。

2.會員輸入Email位址

3.送出資料

4.激活新密碼(郵箱将收到一個激活密碼的URL)

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

3.激活新密碼

4.使用新的密碼登入

1.為會員生成新密碼,但未激活。

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

                                                                                       表5:找回密碼:

子產品名稱:成員網站間跳轉
成員網站A連結到其它成員網站B,之後處理同會員登入子產品。

                                                                                 表6:成員網站跳轉

子產品名稱:票據加解密及驗證 使用者:Passport伺服器

1.會員Passid、票據釋出時間、票據有效時間、會員其它資訊資料。

2.調用Web Service方法驗證

a. 傳入Email和密碼

b. 傳入cookie驗證票

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

2. 由會員Passid、票據釋出時間、票據有效時間、會員其它資訊資料生成加密的cookie驗證票,并且儲存到資料庫和cookie中。

3. 接收cookie驗證票,解密并驗證,傳回給成員網站登入狀态值。

1.生成加密的cookie票。

2.傳回會員登入狀态值。

                                                                           表7:票據加解密及驗證

3.3輸入輸出要求

解釋各輸入輸出資料的類型,并逐項對格式、數值範圍、精度等作出準确定義。對軟體的資料輸出及必須标明的控制輸出量進行解釋并舉例,包括對硬拷貝報告(正常結果輸出、狀态輸出及異常輸出)以及圖形或顯示報告的描述。

3.4 流程邏輯

      3.4.1注冊流程圖

      3.4.2會員登入流程圖

      3.4.3 會員登出流程圖                

      3.4.4 會員修改密碼流程圖

      3.4.5 會員找回密碼流程圖  

      3.4.6 成員網站間跳轉流程

       假設從成員網站A跳轉到成員網站B,網站A提供網站B的入口連結即可。導航到網站B後,其流程與會員登入流程一樣。

3.5對性能的規定

3.5.1精度

3.5.2靈活性

設計時需要充分考慮功能的擴充,使功能子產品具有很強的靈活性。

靈活性因素:

a.操作方式上的變化;

b.運作環境的變化;

c.同其他軟體的接口或其他軟體對該子產品的內建;

d.精度和有效時限的變化;

e.計劃的變化或改進。

3.6 資料管理

3.6.1資料管理能力要求

說明需要管理的文卷和記錄的個數、表和文卷的大小規模,要按可預見的增長對資料及其分量的存儲要求做出估算。比如,在資料庫中設計中會員ID時,若采用自增型變量要估算會員的數量級,确定采用(int)資料類型,還(bigint)資料類型。

3.6.2資料庫設計(Passport伺服器)

          1).Pass_Member(會員表)

字段名稱 資料類型 說明 備注
mPassID Bigint 會員ID号 自增型,PK(主鍵)
mName Nvarchar(64) 會員名 Email作為會員名(建立索引)
mPwd Nvarchar(32) 會員密碼 資料庫中儲存MD5運算的結果
mGBPwd 會員找回密碼 會員找回密碼時,生成的密碼,會員激活後覆寫會員密碼
mWake Tinyint 會員喚醒 當和成員網站建立映射關系後,喚醒該會員
mMapWebsite Nvarchar(128) 會員映射的成員站點 建立會員映射關系的成員網站串
mRegDT Datetime 會員注冊時間
mAreaCode Nvarchar(8) 區域代号
mBack 預留字段 預留擴充

注意:成員網站的會員表,需要通過mPassID字段建立與Pass_Member表中會員的映射關系。

       備注:60-11-20添加兩個字段(紅色高亮)

           2).Member_WebSite(成員網站表)

mWebID int 成員網站ID編号 PK(主鍵)
mWebName 成員網站名稱
mWebURL 成員網站URL
mWebIP Nvarchar(16) 成員網站IP
mWebManager 成員網站管理者 成員網站故障時,便于維護
mWMTel 成員管理者電話

      3).Member_Ticket(會員票據表)

mTicketID Nvarchar(240) 驗證票編碼
FK(關聯Pass_Member表mPassID)
issueDT 票簽發日期時間
availDT datetime 票有效日期時間
digitalSign 票的數字簽名 用于保證票的安全

      4).Member_SignRecord(會員登入記錄表)

ID 記錄ID号
signinDT 登入日期時間
signinWebID 登入網站ID編号 FK(關聯Member_WebSite表)
signoutDT 登出日期時間
signoutWebID 登出網站ID編号

3.6.3資料處理

       建立作業

1、定時把驗證票的記錄導入的備份表中,供統計分析使用。

2、定時把一天以上沒有激活的會員删除

3.7 Passport伺服器與成員網站接口規範

      3.7.1 Passport伺服器入口及調用接口

           a.注冊入口

            重定向規範:

      成員網站注冊重定向位址:http://passport.david.cn/register.aspx

       成員網站入口參數:  AppID                成員網站ID号

                            Redirect             Passport重定向位址

        Passport回傳參數:Ticket               cookie驗證票加密串

                            PassID               會員ID号

                            UserName             會員名稱(Email)

        舉例:

              假設AppID=1;Redirect=http://www.woall.com/index.aspx

              Ticket= 53D2FD484DC6FAD75E82;[email protected]

              PassID=1234

              則 成員網站重定向位址為:

http://passport.david.cn/register.aspx?AppID=1&Redirect=http://www.woall.com/register.aspx

                     Passport重定向位址為:

http://www.woall.com/index.aspx?Ticket=53D2FD484DC6FAD75E82&PassID=1234&[email protected]

 Web Service通信規範:

      若使用者從成員網站A重定向到Passport伺服器注冊會員時,Passport調用成員網站Web Service接口,建立Passport資料庫與網站A資料庫中會員的關聯,關聯字段為Pass_Member表中的mPassID。

Web Service名稱: pass_user_related

所有者:成員網站

調用者:Passport伺服器

輸入參數:PassID:字元串,表示會員ID号                       

輸出參數:Flag:布爾型,表示是否成功建立關聯

 b.登入接口

   驗證cookie票Web Service規範:成員網站本地域存在cookie驗證票時,使用的接口。

Web Service名稱:web_ticket_auth

所有者:Passport伺服器

調用者:成員網站

輸入參數:TicketCode 字元串   驗證票字元串

          AppID        字元串 成員網站ID

輸出參數:Flag:布爾型,表示驗證票是否合法

驗證邏輯:隻要資料庫中存在該驗證票,且在有效期内,即合法。

       HTTP[本接口改為了重定向的方式,請參考下面的部分]請求通信接口規範:成員網站域不存在cookie驗證票,檢視Passport域是否存在。

Passpport提供的URL:http://passport.david.cn/pass_ticket_exist.aspx

輸入參數:無

 輸出參數:XML格式的文本(符合RSS2.0标準),XML包含節點

Flag:表示是否存在合法的驗證票

Ticket:表示驗證票字元串

PassID:表示會員ID号

UserName:表示Email位址

備注:Http請求,從成員網站域,向Passport域發送請求時,并不能通路到在Passport域中向用戶端寫的cookie值。現改成重定向的方式

重定向接口規範:

 Passport提供的重定向位址:http://passport.david.cn/pass_ticket_exist.aspx

輸入參數:Redirect    字元串   Passport重定向到成員網站的位址

          AppID       字元串   成員網站ID号

回傳參數:Ticket       字元串   驗證票編号

          PassID       字元串   會員ID号

          UserName     字元串   會員名稱

     舉例:

              假設:Redirect= http://www.woall.com/Public/Login_State.aspx

 AppID=1

 Ticket=53D2FD484DC6FAD75E82

 PassID=1234

 [email protected]

 則:則 成員網站重定向位址為:

http://passport.david.cn/pass_ticket_exist.aspx?AppID=1&Redirect=http://www.woall.com/Public/Login_State.aspx

 Passport重定向位址為:

http://www.woall.com/Public/Login_State.aspx? Ticket=53D2FD484DC6FAD75E82&PassID=1234&[email protected]

              登入框送出接口規範:成員網站輸入Email和密碼送出到Passport的位址。

              送出到Passport的位址:http://passport.david.cn/pass_login.aspx

  成員網站入口參數:Email                會員名

                    Pwd                  會員密碼

                    AppID               成員網站ID

                   Redirect             Passport重定向位址

Passport回傳參數:Ticket             字元串,cookie驗證票加密串

                    PassID             字元串,會員ID号

                    UserName            字元串,會員名稱(Email)

Flag               登入成功與否辨別2-成功(會員存在)3-失敗(會員名不存在)4-密碼不正确,5-資料庫錯誤

              舉例:

                     假設:Passport重定向位址為http://www.woall.com/default.aspx

                     則,Passport伺服器重定向到成員網站的位址是

http://www.woall.com/default.aspx?Ticket=53D2FD484DC6FAD75E82&PassID=1234&[email protected]&Flag=1

 c.登出接口

   重定向規範:

   成員網站登出重定向位址:http://passport.david.cn/Public/logout.aspx

成員網站入口參數:AppID        字元串,成員網站ID号

Ticket         字元串,cookie驗證票

Redirect      字元串,Passport重定向位址

Passport回傳參數:Flag     字元串,1-表示成功從Passport登出;0-票不合法;-1-失敗(資料庫錯誤)

                      Ticket= 53D2FD484D

                      Flag=1

              則,成員網站重定向到Passport的位址為

http://passport.david.cn/Public/logout.aspx?AppID=1&Ticket=53D2FD484D&Redirect=http://www.woall.com/index.aspx

                            Passport伺服器重定向到成員網站的位址為:

http://www.woall.com/index.aspx?Flag=1

 d.修改密碼接口

  重定向規範:

  成員網站修改密碼重定向位址:http://passport.david.cn/Public/pwd_mod.aspx

Passport回傳參數:Flag    字元串,1-成功;0-驗證票不合法;-1-資料庫錯誤

http://passport.david.cn/Public/pwd_mod.aspx?AppID=1&Ticket=53D2FD484D&Redirect=http://www.woall.com/index.aspx

e.找回密碼接口

重定向規範:

成員網站找回密碼重定向位址:http://passport.david.cn/Public/getback_pwd.aspx

                  Ticket         字元串,cookie驗證票

Passport回傳參數:Passport伺服器發送密碼激活位址(其中有驗證票字元串)到會員郵箱,供激活密碼。

激活位址:

http://passport.david.cn/pwd_awake.aspx?Ticket=53D2FD484D

繼續閱讀