鄭 凱,聶瑞華,梁卓明,劉學文
(1.華南師范大學 網絡中心,廣東 廣州 510631;2.廣州北大明天資源科技發展有限公司,廣東 廣州 510632)
基于用戶映射關系的數字校園單點登錄的實現*
鄭 凱1,聶瑞華1,梁卓明1,劉學文2
(1.華南師范大學 網絡中心,廣東 廣州 510631;2.廣州北大明天資源科技發展有限公司,廣東 廣州 510632)
高校校園網多應用系統的環境下,各應用系統均有獨立的身份驗證機制,給用戶帶來不便。本文提出的數字校園單點登錄機制,解決了數字校園多應用系統的統一身份驗證問題。
單點登錄;Passport服務器;驗證票據;Cookie
單點登錄提供一個用戶管理的統一接口,當用戶要訪問多個需要認證的應用系統時,只需進行一次登錄和身份認證,就可以對所有被授權的應用系統直接訪問,不必重新登錄。[1]本文結合數字校園建設實踐,提出一套基于應用系統間用戶映射關系的單點登錄機制,并加以實現。
1.系統結構
本文提出的單點登錄系統如圖1所示,主要有Passport服務器、多個成員應用系統和維護用戶映射關系的LDAP目錄服務器組成。[2]Passport服務器是單點登錄系統的處理核心,它主要完成映射關系管理、登錄管理、身份驗證管理、URL轉發和Cookie管理等工作。

圖1單點登錄系統的系統結構
2.接口和程序定義
為完成登錄驗證和應用漫游,定義Passport服務器提供的接口和程序如下:
(1)登錄管理接口KeyManagerService
提供getLoginURL、getAuthURL等方法。getLoginURL方法獲取用戶登錄信息,返回含有用戶登錄信息和登錄程序地址的URL字符串;getAuthURL獲取用戶目前的登錄狀態,返回含有登錄狀態和校驗程序地址的URL字符串。
(2)用戶管理接口UserManagerService
提供addMemberSysUser、deleteMemberSysUser、update-MemberSysUser、getLDAPUserPassword、getUserInfo、change-MemberUserPWD等方法。與目錄服務器進行交互,實現增加、刪除、修改和查詢用戶在應用系統中的帳號、密碼等操作,維護用戶映射關系表。
(3)信息校驗接口SecurityPolicy
提供validateTicket、createKey、decode等方法。validate-Ticket方法檢驗加密信息和票據的合法性和時效性;createKey方法獲取用戶在漫游目標系統中的登錄信息,返回含有登錄信息的URL字符串。
(4)登錄程序LoginServlet
提供saveTicket等方法。saveTicket方法返回一個含有加密驗證票據的Cookie。
(5)校驗程序AuthenServlet
提供getTicket等方法。getTicket方法讀取Cookie中的加密驗證票據。
用戶管理機制為需要實現應用漫游的用戶配置一個統一的登錄帳號作為單點登錄帳號,單點登錄帳號與用戶在其他應用系統中的帳號形成映射關系。系統通過LDAP Schema設計的目錄樹反映這種映射關系,多個應用系統間的用戶映射關系如圖2所示。

圖2單點登錄系統的用戶映射關系
用戶映射關系可以通過應用系統數據庫中的用戶信息與數字校園數據中心的人事基本信息相關聯得到。在集成了多個應用系統的單點登錄系統中,要形成完整的用戶映射關系,需要進行多次信息關聯,導致系統的復雜度高,可擴展性不強。本文的設計中Passport服務器提供一個用戶界面,如圖3所示。用戶在該界面中手動輸入具有訪問權限應用系統的帳號和密碼,自主選擇哪些應用系統實現單點登錄的信息關聯,具有較好的靈活性和安全性。

圖3管理單點登錄用戶映射關系的用戶界面
1.登錄驗證
登錄驗證是指用戶首次登錄某成員應用系統時的驗證和漫游授權過程。當用戶登錄請求通過成員應用系統驗證后,由該系統負責向Passport服務器提交帳號、密碼和登錄時間等登錄信息,Passport查詢LDAP服務器中的用戶映射表,身份驗證成功后,創建一個含有驗證票據的Cookie返回給用戶,同時URL重定向到用戶請求頁面。獲得驗證票據的用戶在有效時間內具備了應用系統間漫游的能力。一個完整的登錄驗證過程如圖4所示。
(1)用戶在任何一個成員應用系統進行登錄,應用系統按本系統的驗證機制驗證用戶登錄請求;

圖4登錄驗證過程
(2)驗證通過后,應用程序調用 Passport服務器KeyManagerService接口的getLoginURL方法將成員應用系統ID、登錄帳號、密碼和登錄時間等驗證信息組合創建加密信息,并將加密信息和訪問LoginServlet地址一起,構建成一個URL字符串;
(3)根據包含加密信息和 LoginServlet地址的URL字符串登錄Passport服務器的LoginServlet程序;
(4)LoginServlet調用SecurityPolicy接口的validate-Ticket方法解密信息,驗證成員系統發送的信息是否正確;
(5)如果登錄信息合法,LoginServlet調用saveTicket方法為用戶請求創建一個含有加密驗證票據的Cookie,否則,直接URL重定向到應用系統的登錄頁面;
(6)URL重定向到應用系統用戶登錄后的指定頁面,完成登錄驗證。
2.應用漫游
應用漫游是指獲得Passport服務器漫游票據的用戶直接登錄單點登錄系統成員應用系統的過程。Passport服務器驗證每次應用漫游票據的合法性和時效性,通過驗證后,取出LDAP目錄服務器中漫游目標系統的登錄帳號、密碼和URL地址等信息直接進行登錄。一個完整的應用漫游過程如圖5所示。

圖5應用漫游過程
(1)用戶在成員應用系統A的頁面上向Passport服務器提交對成員應用系統B的漫游請求;
(2)Passport服務器調用AuthenServlet程序的getTicket方法讀取Cookie中保存的驗證票據;
(3)AuthenServlet把讀取的票據發送給SecurityPolicy接口,SecurityPolicy調用 decode方法解密票據,調用validateTicket方法驗證票據的合法性和時效性;
(4)驗證通過后,調用UserManagerService的getUserInfo方法讀取成員應用系統B的系統ID、登錄帳號和密碼;
(5)AuthenServlet調用CreateKey方法將讀取的成員應用系統B的登錄信息組合創建加密信息,并將加密信息和系統登錄頁面的地址一起,構建成一個URL字符串;
(6)根據URL字符串內容重定向到成員應用系統B,完成應用漫游。
為提高驗證票據的安全性,系統發放的票據必須進行加密,這樣即使票據被非法截取,只要加密算法和密鑰強度足夠高,也極難被破解。本文單點登錄票據的加密采用了3DES加密算法,3DES是DES向AES過渡的加密算法,是DES的一個更安全的變形,算法的密鑰長度為112位或168位,加密解密運算速度較快。[3]
驗證票據包含了一個標識票據有效期的時間戳,記錄了用戶發起登錄驗證的時間,當登錄驗證后流逝的時間超過有效期后,為保證票據的安全性,該票據將失效。票據有效期的設定既要顧及用戶的使用方便,也要考慮票據的安全性,一般為5分鐘到10分鐘之間。
本文提出的基于用戶映射關系的數字校園單點登錄機制解決了高校多業務應用系統環境下的分散登錄問題,以B/S方式實現了任何成員應用系統之間的互訪,成員應用系統的結果返回頁面可以直接嵌入到其他成員應用系統(如信息門戶系統)的頁面中。系統采用了可靠的加密算法,可以預防惡意的信息截取和身份偽造等安全隱患。在此單點登錄機制下,華南師范大學數字校園建設實現了多達14個應用系統的統一身份驗證和應用漫游功能。
由于目前的單點登錄機制主要依賴于驗證服務器及其提供的接口和程序運作,如何提高驗證服務器的健壯性和安全性,需要進一步的研究和解決。☉
[1]程宏斌,孫霞.單點登錄技術研究[J].計算機時代,2004(5): 3-4.
[2]趙明,郭常杰等.基于LDAP的目錄服務器的研究與實現[J].計算機科學,2000,27(5):84-86.
[3]鄭磊,易波.基于單片機的實時3DES加密算法的實現[J].微處理機,2000(3):40-42.
(編輯:楊馥紅)
TP393.08
A
1673-8454(2010)15-0038-03
華南師范大學“211工程”項目支持。