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