史云鵬,趙 旻
(1.青島電視大學膠州分校,山東 膠州 266300;2.青島市第五十一中學,山東 青島 266071)
單點登錄認證框架在校園共享系統(tǒng)中的應用
史云鵬1,趙 旻2
(1.青島電視大學膠州分校,山東 膠州 266300;2.青島市第五十一中學,山東 青島 266071)
針對目前數(shù)字化校園建設(shè)中各種跨業(yè)務范疇應用系統(tǒng)各自獨立運行、獨立認證的問題,本文分析研究單點登錄認證框架在校園共享系統(tǒng)開發(fā)中的可行性與實現(xiàn)流程。使用集成SSO機制的J2EE開發(fā)框架整合改造已運行使用的各業(yè)務系統(tǒng),與新開發(fā)的Web應用系統(tǒng)耦合,實現(xiàn)鏈接。實現(xiàn)安全有效的用戶管理和不同域上應用系統(tǒng)的統(tǒng)一認證。
數(shù)字化校園;單點登錄;Web服務;系統(tǒng)集成
數(shù)字化校園建設(shè)以信息資源與信息服務為核心內(nèi)容,以實現(xiàn)數(shù)字化的學習、教學、科研和管理為目標。隨著校園信息化建設(shè)的不斷深入,各種基于校園網(wǎng)絡的應用系統(tǒng)在行政辦公、教學科研、后勤服務工作中廣泛應用。由此,教育資源信息系統(tǒng)的研發(fā)成為數(shù)字化校園建設(shè)的核心內(nèi)容,其研究的重點是以信息整合及服務集成為目標,實現(xiàn)教學資源的充分共享,各業(yè)務部門能夠優(yōu)化數(shù)據(jù),便捷管理和使用,并且系統(tǒng)能夠提供良好的安全性以及個性化服務。然而,目前學校各種跨部門、跨業(yè)務應用系統(tǒng)各自獨立運行、獨立認證的弊端也逐漸突顯出來:各應用系統(tǒng)缺乏耦合,教學信息資源沒有合理整合優(yōu)化,校園網(wǎng)絡難以集中管理;系統(tǒng)用戶權(quán)限不清,缺乏統(tǒng)一的角色訪問控制,安全性存在較大隱患。
以我校數(shù)字化校園建設(shè)項目為例,其建設(shè)目標是建設(shè)一個具有現(xiàn)代化水平的信息化校園,經(jīng)過幾年的努力各業(yè)務部門根據(jù)需要建立部署了圖書管理系統(tǒng)、教務管理系統(tǒng)、學籍管理系統(tǒng)、后勤管理系統(tǒng)、職業(yè)資格考核報名系統(tǒng)、校園一卡通系統(tǒng)等,而這些獨立于各業(yè)務部門的應用系統(tǒng)各自的身份管理缺失耦合。研究表明,基于單點登錄認證機制的Web Services架構(gòu)在數(shù)字化校園資源共享系統(tǒng)中的開發(fā)應用,能夠?qū)υ邢到y(tǒng)進行數(shù)據(jù)整合和應用整合,通過對各系統(tǒng)站點數(shù)據(jù)的優(yōu)化整合共享資源,使全校業(yè)務運行更加規(guī)范,節(jié)約成本,提高效率;通過提供單一的訪問入口,進行統(tǒng)一身份認證,安全控制、易于管理。
1.可行性分析
傳統(tǒng)的應用系統(tǒng)認證機制普遍是基于用戶名/密碼的,采用分散的用戶管理,這種身份標識是分別被每個系統(tǒng)保存的,無法相互傳遞。這就需要用戶在進入不同系統(tǒng)時都要分別提交身份標識,來通過系統(tǒng)的認證,才能調(diào)用不同站點提供的服務。
廣泛應用于學校各部門、各業(yè)務領(lǐng)域的信息系統(tǒng)正是由于這種各自運行、獨立認證的弊端使得數(shù)字化校園建設(shè)缺失統(tǒng)一的角色訪問控制,教育資源得不到合理優(yōu)化高效利用?;谛屎桶踩囊蛩?,我們在數(shù)字化校園資源共享系統(tǒng)的開發(fā)架構(gòu)中使用了一種認證信息共享模式的單點登錄SSO(Single Sign On)機制?;趩吸c登錄機制的J2EE設(shè)計架構(gòu)把原來分散的用戶管理集中起來,各系統(tǒng)之間依靠相互信賴的關(guān)系來進行用戶身份的自動認證。單點登錄SSO使得只需進行一次身份認證就可達到對多個應用系統(tǒng)進行訪問,提高了用戶工作效率。單點登錄從根本上拋棄了傳統(tǒng)認證中用戶名/密碼以明文傳輸?shù)姆绞?,采用了結(jié)合密碼學技術(shù)的新認證機制,從而提高了整個系統(tǒng)的安全性。另外,采用SAML(安全斷言標記語言)和SRP(安全遠程密碼協(xié)議)實現(xiàn)SSO,同時提高了跨越數(shù)字化校園邊界的安全信息互操作性,使各不相同的安全系統(tǒng)身份認證達到一體化,優(yōu)化了網(wǎng)絡系統(tǒng)的安全管理控制。
2.SSO單點登錄模型及實現(xiàn)流程
單點登錄是應用于Web Services服務器的一種認證信息共享機制。[1]應用系統(tǒng)需要從用戶那里收集所有必要的證明和用戶憑證信息,用以支持可能會與之發(fā)生作用的其他應用系統(tǒng)對用戶的認證。
使用單點登錄集成架構(gòu)之前,每個系統(tǒng)都會有各自的安全體系和身份認證系統(tǒng)。用戶訪問系統(tǒng)都需要輸入相應系統(tǒng)正確的用戶名和口令,鑒權(quán)通過后方可訪問。
單點登錄后,用戶在經(jīng)過一次網(wǎng)絡身份驗證后,就可以訪問所有授權(quán)的網(wǎng)絡資源,而不需要額外驗證。例如,如圖1所示,資源共享系統(tǒng)有Ⅰ、Ⅱ、Ⅲ三個應用服務子系統(tǒng),實現(xiàn)單點登錄的流程是:
當用戶訪問Ⅰ應用服務時,會被引導到認證系統(tǒng)或用戶管理系統(tǒng)中進行登錄①,根據(jù)用戶提供的登錄信息,認證系統(tǒng)進行身份校驗,若通過校驗,返回給用戶一個認證的票據(jù)(ticket)②;
票據(jù)是系統(tǒng)給登錄的合法用戶發(fā)放的一張許可證。各服務系統(tǒng)僅根據(jù)用戶票據(jù)提供服務訪問,因此用戶可以通過該合法票據(jù)實現(xiàn)對所有應用系統(tǒng)的統(tǒng)一訪問。票據(jù)在整個支撐體系中是唯一的,并對用戶進行了身份綁定,用戶無法通過偽造或交換票據(jù)來非法侵入系統(tǒng)。票據(jù)上印有時間戳和用戶屬性,系統(tǒng)可以通過屬性實現(xiàn)對用戶訪問的個性化控制;
用戶再訪問Ⅱ、Ⅲ應用服務的時候就會將這個票據(jù)附帶上③⑤,作為認證憑據(jù),應用系統(tǒng)接收到請求之后把票據(jù)送到認證系統(tǒng)進行校驗,檢查票據(jù)的合法性④⑥。若通過校驗,可以不需再次登錄而直接訪問Ⅱ、Ⅲ應用服務。
1.共享系統(tǒng)SSO認證整體架構(gòu)設(shè)計思路
為了滿足系統(tǒng)能夠提供安全有效的用戶管理,實現(xiàn)不同域上的應用系統(tǒng)統(tǒng)一認證,使用集成SSO機制的J2EE開發(fā)框架整合改造已經(jīng)運行使用的各業(yè)務系統(tǒng),增加對SSO支持,與新開發(fā)的各Web應用系統(tǒng)優(yōu)化耦合,集成于共享系統(tǒng)中,實現(xiàn)無縫鏈接。
已部署的應用系統(tǒng)擁有各自的用戶庫(用戶數(shù)量、密碼、賬號),在共享系統(tǒng)中要做到用戶信息的統(tǒng)一。我們可以將單點登錄系統(tǒng)中的用戶數(shù)據(jù)與其他各Web應用系統(tǒng)中的用戶數(shù)據(jù)建立映射,實現(xiàn)一個帳號管理多個系統(tǒng)的目的。另外,共享系統(tǒng)之內(nèi)的各業(yè)務系統(tǒng)可能不在同一個域下,由于用來傳遞會話ID的Cookie不允許跨域訪問,因此我們采用基于XML-RPC的臨時會話而非共享會話的方式來實現(xiàn)單點登錄,通過在客戶端瀏覽器、單點登錄系統(tǒng)和Web應用系統(tǒng)之間傳遞臨時會話,Web應用系統(tǒng)直接到單點登錄系統(tǒng)中獲取認證信息來實現(xiàn)單點登錄。用XML-RPC在Web應用系統(tǒng)和單點登錄系統(tǒng)之間進行通訊,能夠?qū)崿F(xiàn)各應用系統(tǒng)跨域訪問,以及屏蔽不同開發(fā)工具開發(fā)的應用程序之間難以訪問的問題。而這種開發(fā)整合,恰好符合J2EE開發(fā)平臺具有良好兼容性的特點,使認證系統(tǒng)能夠屏蔽這種平臺差異,實現(xiàn)SSO在不同應用域的跨越。
另一方面,設(shè)計集成系統(tǒng)的可擴展性和松散耦合特性也是基于以下兩方面的考慮:若有新的應用系統(tǒng)在校園共享系統(tǒng)部署時,能夠?qū)⑿碌膽孟到y(tǒng)方便地集成到單點登錄系統(tǒng)里進行統(tǒng)一的認證和授權(quán);當單點登錄系統(tǒng)的內(nèi)部結(jié)構(gòu)發(fā)生變化,也可以保證這種變動對于用戶和其他應用系統(tǒng)來說是透明的。
2.數(shù)字化校園共享系統(tǒng)整體架構(gòu)設(shè)計與開發(fā)
(1)系統(tǒng)整體架構(gòu)及各Web服務的實現(xiàn)
共享系統(tǒng)架構(gòu)包括單點登錄認證平臺SSO,LDAP數(shù)據(jù)庫,Web Services集成服務。[2][4]數(shù)字化校園共享系統(tǒng)整體架構(gòu)如圖2所示。
1)SSO單點登錄系統(tǒng):包括CAS服務器,為應用系統(tǒng)提供認證和授權(quán)服務。
2)用戶和系統(tǒng)信息數(shù)據(jù)庫:采用標準的LDAP目錄服務數(shù)據(jù)庫,以層次結(jié)構(gòu)、面向?qū)ο蠓绞綄π?nèi)用戶和應用系統(tǒng)的信息進行管理,保證數(shù)據(jù)的一致性和完整性,為校園網(wǎng)的各類應用系統(tǒng)提供用戶信息共享使用。
3)Web Services集成服務 (通過 Web Services技術(shù)將各功能模塊封裝成Web Service部件后發(fā)布到UDDI注冊中心,以方便其他應用通過接口調(diào)用),包括:SOAP處理器、事務處理器和適配器三個模塊。SOAP處理器實現(xiàn)SOAP消息的傳遞;事務處理器負責對用戶各種事務請求的處理和響應;適配器為每個應用提供不同的接口以供調(diào)用;建立與后端服務器的通信連接和安全機制;實現(xiàn)XML-RPC數(shù)據(jù)格式在各應用子系統(tǒng)數(shù)之間的轉(zhuǎn)換;實現(xiàn)在SOAP處理器與適配器之間的消息傳遞。
中心站點各Web服務的實現(xiàn):首先,資源站點將提供的資源服務接口用WSDL描述后,將本站點Web服務注冊到UDDI注冊中心。注冊中心審核并發(fā)布審核通過的資源站點Web服務。其次,由目錄中心調(diào)用UDDI注冊中心發(fā)布的Web服務,以獲取各資源站點的Web服務注冊信息并通過程序?qū)⒏髡军c中的資源信息同步更新至目錄中心數(shù)據(jù)庫中,然后數(shù)據(jù)綁定至公共服務平臺供用戶查詢、下載和管理資源。
(2)系統(tǒng)Web Service的集成要點
XFire作為Web Service框架開發(fā)工具,通過提供簡單的API支持Web Service各項標準協(xié)議,可方便快速地開發(fā)Web Service應用。[2][4]開發(fā)部署:新建Web工程,應用Myeclipse添加Xfire核心類庫。為后續(xù)客戶端的測試,加入commons-httpclient.jar包到工程WEB-INF/lib目錄下。在src下建立test和Webservice目錄,分別用于存放測試文件和Webservice的相關(guān)類。
Web Serviced的實現(xiàn):首先,Web.xml的配置。首先在Web.xml中配置XFire的 servlet和servlet-mapping兩個文件。然后加載Spring的相應配置文件,以達到將XFire集成到Spring中的目的。Spring的兩個配置文件一個為applicationContext.xml,該文件用來定義本工程的bean,一個為xfire-servlet.xml,用來配置XFire的相關(guān)bean。需提前在WEB-INF目錄下建立。其次,編寫Web服務程序。對每一個具體的Web服務在src/Webservice目錄下編寫此服務接口類和對應的實現(xiàn)類。
(3)系統(tǒng)中心單點登錄功能的實現(xiàn)
校園共享系統(tǒng)采用acegi整合CAS來實現(xiàn)認證與授權(quán),CAS負責完成認證部分,acegi負責應用程序的授權(quán)。[3][5]安裝CAS,拷貝 CAS target目錄中的 cas.war到Tomcat Webapps目錄下;配置Tomcat,使Tomcat支持SSL,增加CAS使用https和客戶端進行通信的安全性;安裝配置 CAS Server和 acegi,添加 acegi-security-1.0.1.jar和acegi-security-cas-1.0.l.jar到工程目錄。打開WEB-INF中spring的配置文件deployerConfigContext.xml,配置用戶認證,增加應用授權(quán)bean。
單點登錄系統(tǒng)設(shè)置四個表:單點登錄系統(tǒng)用戶表(user_id,name,password);Web 應 用 系 統(tǒng) 表 (app_id,name,checkurl),name 是 Web 應 用系統(tǒng) 名稱,checkurl是Web應用系統(tǒng)中用來驗證用戶登錄的程序地址;單點登錄系統(tǒng)用戶到各個 Web應用系統(tǒng)的用戶映射表(id,user_id,app_id,name,password); 臨時會話表, 包含hash(臨時會話的 hash編號)、id(對應單點登錄系統(tǒng)用戶到各個 Web應用系統(tǒng)的用戶映射表中的 id字段)2個字段。
用戶登錄單點登錄系統(tǒng)時,通過單點登錄系統(tǒng)用戶表中的字段來驗證用戶身份。CAS認證通過后,確立各個Web應用系統(tǒng)到該系統(tǒng)用戶的映射關(guān)系。用戶通過單點登錄系統(tǒng)進入其他某個 Web應用系統(tǒng)時,該系統(tǒng)會為用戶和Web應用系統(tǒng)生成一個臨時會話編號(hash),并轉(zhuǎn)到 Web應用系統(tǒng)中的登錄檢測頁面,登錄檢測頁面通過獲取到的臨時會話編號,來調(diào)用單點登錄系統(tǒng)的XML_RPC API,獲取用戶名和密碼實現(xiàn)Web應用系統(tǒng)的登錄。
通過統(tǒng)一認證系統(tǒng)實現(xiàn)用戶在應用系統(tǒng)處的自動登錄,這種設(shè)計能夠?qū)崿F(xiàn)校內(nèi)現(xiàn)存的多種業(yè)務應用系統(tǒng)統(tǒng)一身份認證,包括單點登錄和授權(quán)管理的問題。降低各系統(tǒng)開發(fā)和管理難度,提高使用安全性,能夠?qū)崿F(xiàn)數(shù)字化校園共享系統(tǒng)資源共享、數(shù)據(jù)優(yōu)化、便捷管理的建設(shè)目標。方案對已有的 Web應用系統(tǒng)和將來待開發(fā)的 Web應用系統(tǒng)進行集成部署和實施,有利于企事業(yè)單位內(nèi)部應用系統(tǒng)的升級改造。
[1]Pashalidis A,Mitchell C.J.Single sign-on using trusted plat-forms[C].Information Security.Berlin:Springer,2003:54-68.
[2]鄭東曦.基于Web服務的統(tǒng)一身份認證服務的設(shè)計實現(xiàn)[J].計算機工程與設(shè)計,2006(6).
[3]張濤,王秉坤.使用 CAS在 Tomcat中實現(xiàn)單點登錄[DB/OL].http://www.ibm.com/developerworks/cn/opensource/os-cn-cas,2008-4-10.
[4]劉潤峰.多域單點登錄系統(tǒng)的設(shè)計與實現(xiàn)[D].北京郵電大學,2007.
[5]JoeWigglesworth,PaulaMcMillan,JavaProgramming:Advanced Topics[M].北京:清華大學出版社,2005.7.
(編輯:金冉)
TP315
B
1673-8454(2011)15-0081-03