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
則:則 成員網站重定向位址為:
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