胡 平,段淮川
(南京工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院,江蘇 南京 210009)
目前,各大型企事業(yè)單位部門(mén)及人員關(guān)系調(diào)整越來(lái)越頻繁,部門(mén)及人員對(duì)應(yīng)用系統(tǒng)要求有不同權(quán)限。在許多企事業(yè)單位中,不同的應(yīng)用系統(tǒng)都有一套獨(dú)立的用戶管理系統(tǒng),造成用戶管理系統(tǒng)重復(fù)開(kāi)發(fā),同時(shí)各系統(tǒng)之間的集成也存在問(wèn)題,難以實(shí)現(xiàn)用戶單點(diǎn)登陸,給用戶管理帶來(lái)了很大困難。如何提高管理效率,減少重復(fù)開(kāi)發(fā),很好地管理組織機(jī)構(gòu)、部門(mén)、用戶及角色,靈活支持企業(yè)的安全策略,對(duì)企業(yè)的變化有很大的伸縮性,為此構(gòu)建一種基于Web Service的統(tǒng)一用戶管理系統(tǒng),該系統(tǒng)設(shè)計(jì)采用統(tǒng)一的安全管理設(shè)計(jì)思想,擴(kuò)展RBAC用戶授權(quán)模型,以及LDAP目錄服務(wù)器身份認(rèn)證的技術(shù),具有通用、安全、易于管理可擴(kuò)展等特性。
基于Web服務(wù)的企業(yè)門(mén)戶信息化平臺(tái)采用了基于Web的多層框架結(jié)構(gòu),包括用戶層、Web服務(wù)層、應(yīng)用服務(wù)層和數(shù)據(jù)庫(kù)層,如圖1所示。
圖1 基于Web的信息平臺(tái)多層框架結(jié)構(gòu)Fig.1 Structure of multiple information system based on web
其中,用戶層支持若干網(wǎng)絡(luò)終端訪問(wèn)IPS,例如相關(guān)網(wǎng)絡(luò)終端:電腦、PDA、手機(jī),以及其他的網(wǎng)絡(luò)訪問(wèn)設(shè)備。通過(guò)設(shè)置統(tǒng)一的登錄接口,Web瀏覽器能夠訪問(wèn)系統(tǒng)資源和服務(wù);Web層提供平臺(tái)入口服務(wù),通過(guò)該入口,服務(wù)器能夠根據(jù)不同用戶的請(qǐng)求處理或展示用戶提交的數(shù)據(jù),以及保存在數(shù)據(jù)中心的用戶資料等信息;應(yīng)用層提供Web應(yīng)用服務(wù)。例如,用戶信息管理,身份認(rèn)證,并處理入口服務(wù)器接收到的業(yè)務(wù)請(qǐng)求;共享數(shù)據(jù)庫(kù)層是所有集成校園系統(tǒng)的數(shù)據(jù)基礎(chǔ),它集成了所有應(yīng)用信息系統(tǒng)的共享數(shù)據(jù),提供同步精確的源數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在應(yīng)用服務(wù)層。
舉例說(shuō)明該系統(tǒng)的工作流程如下:某個(gè)用戶通過(guò)用戶層向Web層提交一個(gè)請(qǐng)求,Web層選擇一個(gè)特定的portlet,通過(guò)該portlet將請(qǐng)求發(fā)送到應(yīng)用層中對(duì)應(yīng)的Web服務(wù),Web服務(wù)將取得請(qǐng)求的數(shù)據(jù)并回發(fā)給Web層中的portlet。最后,Web層將獲取的數(shù)據(jù)回發(fā)給用戶層,并在用戶層顯示。
根據(jù)上述框架結(jié)構(gòu)和相關(guān)技術(shù),詳細(xì)論述其實(shí)現(xiàn)方法。首先介紹Portlets,包括Portlets的優(yōu)點(diǎn),及其與 Web Services之間交換數(shù)據(jù)的過(guò)程,平臺(tái)數(shù)據(jù)的綜合集成。
門(mén)戶(Portal)是通往一套資源的入口,即在有效的網(wǎng)絡(luò)環(huán)境下,把各種應(yīng)用系統(tǒng)資源、數(shù)據(jù)資源、信息資源統(tǒng)一集成到一個(gè)平臺(tái)下,根據(jù)每個(gè)用戶使用特點(diǎn)和角色的不同,形成個(gè)性化的應(yīng)用界面,并通過(guò)對(duì)事件和消息的處理傳輸把用戶有機(jī)地聯(lián)系在一起。Portal的組成可以分為3部份:Portal Server、Portlet Con-tainer、Portlet。 Portlet是以 Java 為 技術(shù) 的Web組件,由Portlet Container所管理,專門(mén)處理客戶的request以及產(chǎn)生各種動(dòng)態(tài)的信息內(nèi)容。與servlets類似,Portlets是部署在容器內(nèi)用來(lái)生成動(dòng)態(tài)內(nèi)容的Web組件,它具有servlets大部分功能,相對(duì)于servlets,portlets還具有下述優(yōu)點(diǎn)[1]:1)設(shè)置參數(shù)的持久化存儲(chǔ);2)請(qǐng)求處理,Portlets 提供了更為細(xì)粒度的請(qǐng)求處理;3)Portlet模式,Portlet用模式的概念來(lái)表示用戶的操作行為。
從技術(shù)角度,Portlet是一個(gè)實(shí)現(xiàn) javax.portlet.Portlet接口的類,它被打包成war文件格式部署到Portlet容器里。本地應(yīng)用程序部署在Portlet Web服務(wù)器中,這可便捷有效地連接共享數(shù)據(jù)層。Portlet與Web Service交互框架如圖2所示。
圖2 Portlet和本地Web Service交互的架構(gòu)Fig.2 Structure of data exchange between Portlet and Web Service
例如:一個(gè)用戶,登錄進(jìn)IPS平臺(tái),本地組合組件對(duì)servlet的請(qǐng)求按下述程序的步驟響應(yīng):1)如果請(qǐng)求包帶有JSP或者HTML Portlet,則發(fā)送給登錄入口一個(gè)相應(yīng)片段,然后入口將生成一個(gè)HTML文件。2)如果請(qǐng)求包帶有Web服務(wù),登錄口首先調(diào)用SOAP代理。代理先將請(qǐng)求參數(shù)按到來(lái)的順序排列進(jìn)SOAP請(qǐng)求,然后發(fā)送請(qǐng)求到本地Web服務(wù)。本地Web服務(wù)解開(kāi)SOAP請(qǐng)求的包,恢復(fù)請(qǐng)求參數(shù),根據(jù)那些請(qǐng)求參數(shù)調(diào)用本地服務(wù),并完成服務(wù)請(qǐng)求。獲取結(jié)果后,SOAP封裝將結(jié)果打包進(jìn)SOAP請(qǐng)求,并發(fā)送到SOAP代理,然后SOAP代理解開(kāi)包裝的返回結(jié)果。帶有相關(guān)Portlet片段的入口生成入口頁(yè)面,并發(fā)送頁(yè)面到用戶,最后生成對(duì)應(yīng)的HTML文件。
部署本地Portlets到入口作為集成平臺(tái)的引導(dǎo)部分。步驟如下:1)創(chuàng)建資源文件,其中包括JSP文件和對(duì)應(yīng)的JAVA類。JSP文件是將要在Portlet上展示的內(nèi)容。2)配置Web.Xml屬性,這一步與正常的Servlet屬性配置一樣。3)配置Portlet.Xml,定義了 Portlet的重命名,相關(guān) Servlet和 Portlet的屬性,例如:顯示模式和許可設(shè)置。4)Web應(yīng)用的包裝,將所有文件包裝在一個(gè)WAR的文件中,作為Websphere中的一個(gè)Web應(yīng)用服務(wù)。5)設(shè)置 portlet參數(shù),這一步設(shè)置了相關(guān) Web服務(wù)的地址。6)登錄portlets并通過(guò)入口管理用戶化相應(yīng)的屬性。
數(shù)據(jù)集成包括結(jié)構(gòu)化的數(shù)據(jù)和非結(jié)構(gòu)化的數(shù)據(jù)。結(jié)構(gòu)化的數(shù)據(jù)包括關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù);非結(jié)構(gòu)化的數(shù)據(jù)包括文本,頁(yè)面,圖片和多媒體[3]。IPS系統(tǒng)由大量的共享數(shù)據(jù)資源組成,例如個(gè)人信息管理系統(tǒng),學(xué)生工作信息管理系統(tǒng),研究生信息管理系統(tǒng)和郵箱系統(tǒng)和OA系統(tǒng)。這些資源的集成,包括結(jié)構(gòu)化的數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),又稱為信息中心。在這部分,UIP被看作一個(gè)視圖層,它是一種數(shù)據(jù)集成處理Web服務(wù)和基于XML的數(shù)據(jù)集成組件。通過(guò)統(tǒng)一接口,所有不同種類的關(guān)系型數(shù)據(jù)和非關(guān)系型的數(shù)據(jù)都轉(zhuǎn)換為XML格式的數(shù)據(jù),并發(fā)送到集成組件,集成組件再將XML格式的數(shù)據(jù)轉(zhuǎn)到IPS。數(shù)據(jù)集成組件的基本組成架構(gòu)如圖3所示。
圖3 數(shù)據(jù)集成組件的基本架構(gòu)Fig.3 Basic structure of data integration module
數(shù)據(jù)集成組件是數(shù)據(jù)交換和數(shù)據(jù)共享的中心,彼此之間通過(guò)標(biāo)準(zhǔn)的Web服務(wù)接口相互連接傳播,以及以XML格式交換數(shù)據(jù)。以XML格式保存的共享數(shù)據(jù)庫(kù)中的數(shù)據(jù)被傳輸?shù)綌?shù)據(jù)集成組件中,然后由數(shù)據(jù)集成組件將得到的數(shù)據(jù)發(fā)送給IPS。數(shù)據(jù)集成組件和Web服務(wù)通過(guò)SOAP協(xié)議傳輸數(shù)據(jù)。
用戶的授權(quán)方式采用擴(kuò)展RBAC模型,該模型設(shè)計(jì)出一種新的方案。該方案同時(shí)提出了3種授權(quán)方式:角色授權(quán)、個(gè)人授權(quán)、用戶授權(quán)[4]。在系統(tǒng)的權(quán)限的實(shí)現(xiàn)中,系統(tǒng)管理員通過(guò)把3種授權(quán)方式相結(jié)合。對(duì)不同職責(zé)的用戶進(jìn)行分類,創(chuàng)建不同的角色,對(duì)不同的角色授予可以完成特定職能的角色,再給不同的用戶授予不同的角色。當(dāng)需要區(qū)分細(xì)化具有相同角色的用戶權(quán)限時(shí),這時(shí)再通過(guò)個(gè)人授權(quán)來(lái)修改用戶的具體權(quán)限。一般RBAC模型能完成系統(tǒng)的靜態(tài)權(quán)限的分配,而實(shí)現(xiàn)權(quán)限的動(dòng)態(tài)授予必須使用用戶授權(quán)來(lái)實(shí)現(xiàn)。
身份認(rèn)證框架采用Sun公司的單點(diǎn)身份認(rèn)證服務(wù)器作為公共服務(wù)。采用LDAP目錄讀寫(xiě)用戶信息和授權(quán)管理。這樣便于綜合集成入口管理身份認(rèn)證。LDAP是輕量級(jí)目錄訪問(wèn)協(xié)議,它是基于X.500標(biāo)準(zhǔn)的,但是簡(jiǎn)單多了并且可以根據(jù)需要定制。與X.500不同,LDAP支持TCP/IP。LDAP目錄提供大規(guī)模分布環(huán)境以供讀寫(xiě)用戶信息數(shù)據(jù)。使用LDAP主要考慮到以下優(yōu)點(diǎn):
1)卓越的檢索性能,LDAP服務(wù)器在處理大量用戶并發(fā)訪問(wèn)問(wèn)題上優(yōu)勢(shì)明顯,具有比關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)更快的響應(yīng)速度(查詢和修改操作比一般是大于10:1);
2)完善的安全機(jī)制,LDAP服務(wù)器通過(guò)訪問(wèn)控制列表ACL設(shè)置對(duì)目錄數(shù)據(jù)的讀和寫(xiě)的權(quán)限,通過(guò)支持基于SSL(Secure Sockets Layer)的安全機(jī)制完成對(duì)明文加密,為個(gè)人信息提供更安全的保障;
3)跨平臺(tái)支持,由于 LDAP Server運(yùn)行在TCP/IP上層,互聯(lián)網(wǎng)上的各種應(yīng)用無(wú)論是運(yùn)行在UNIX下還是Windows下,都可以通過(guò)TCP/IP訪問(wèn)LDAP服務(wù)器上的目錄信息;
4)用“推”或“拉”的方法復(fù)制部分或全部數(shù)據(jù),大多數(shù)LDAP服務(wù)器都內(nèi)置Replication的功能,它增強(qiáng)了網(wǎng)絡(luò)應(yīng)用中數(shù)據(jù)的安全保障,另外復(fù)制還可以使分布在不同地域的服務(wù)器保持?jǐn)?shù)據(jù)的同步。
單點(diǎn)登錄(Single Sign On,SSO)的原理是當(dāng)用戶訪問(wèn)大量權(quán)限保護(hù)資源時(shí),IDS會(huì)話服務(wù)器將會(huì)生成一個(gè)權(quán)限證書(shū)--Ticket,通過(guò)該證書(shū),會(huì)話中的用戶可以訪問(wèn)其他資源而不需要再次認(rèn)證[5]。例如,當(dāng)用戶訪問(wèn)郵件服務(wù)器時(shí)經(jīng)過(guò)認(rèn)證,郵件服務(wù)器會(huì)調(diào)用IDS接口,該接口產(chǎn)生一個(gè)SSO會(huì)話證書(shū)用來(lái)記錄用戶的身份,同時(shí)產(chǎn)生一個(gè)隨機(jī)數(shù)與Ticket連接。隨機(jī)數(shù)發(fā)送給用戶瀏覽器并保存在cookie中。當(dāng)用戶登錄其他服務(wù)器的同樣領(lǐng)域,例如,OA系統(tǒng),先前的cookie被發(fā)送到服務(wù)器,OA服務(wù)器通過(guò)當(dāng)前的用戶證書(shū)的SSO API讀取到Ticket。于是用戶經(jīng)過(guò)認(rèn)證能夠登錄OA系統(tǒng)。
IPS利用IDS認(rèn)證服務(wù)器的證明進(jìn)入正確的入口頁(yè)面,或者訪問(wèn)正確的信息資源。當(dāng)用戶登錄到IPS登錄界面,IDS便會(huì)將用戶的登錄名和密碼與統(tǒng)一身份認(rèn)證服務(wù)相配對(duì)。如果用戶登錄名和密碼配對(duì)符合,就允許用戶訪問(wèn)Porlet屬于相關(guān)角色的資源。圖4演示了該過(guò)程。
圖4 身份認(rèn)證架構(gòu)Fig.4 Structure of ID authentication
根據(jù)上述系統(tǒng)架構(gòu),采用SUN公司的目錄服務(wù)器和SUN公司的身份認(rèn)證服務(wù)平臺(tái),該平臺(tái)能夠?yàn)檎wIPS平臺(tái)提供統(tǒng)一的身份認(rèn)證。這種認(rèn)證接口通常作為一個(gè)中間組建為應(yīng)用提供API接口。Web控制臺(tái)根據(jù)LDAP目錄協(xié)議來(lái)管理審核用于管理個(gè)人信息的目錄服務(wù)器。Web層使用IBM Websphere平臺(tái)訪問(wèn)服務(wù)器來(lái)提供訪問(wèn)服務(wù)。另外,考慮到IBM Websphere服務(wù)器的穩(wěn)定性和可靠性,使用IBM Websphere來(lái)提供應(yīng)用層服務(wù)。
在上述構(gòu)建的基礎(chǔ)上實(shí)現(xiàn)了某大學(xué)研究生管理系統(tǒng),如圖5所示。
圖5 項(xiàng)目運(yùn)行效果圖Fig.5 Diagram of project operation
基于Portlets,單點(diǎn)登錄技術(shù),擴(kuò)展RBAC模型,LDAP技術(shù)和Web Service,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)統(tǒng)一的信息化平臺(tái)(IPS),并描述了IPS的設(shè)計(jì)和實(shí)現(xiàn)?;赪eb Service的UIP能夠整合資源,并實(shí)現(xiàn)portlet,XML和身份認(rèn)證技術(shù)綜合利用。它為用戶提供了統(tǒng)一的登錄界面訪問(wèn)公共平臺(tái)上的資源,增強(qiáng)了IPS系統(tǒng)的安全性、高效性和可擴(kuò)展性。
[1] 范曉鑫,嚴(yán)雋薇,劉敏,等.基于門(mén)戶的Web集成體系及其適應(yīng)性技術(shù)的研究[J].計(jì)算機(jī)應(yīng)用研究,2007,24(7):208-210.FAN Xiao-xing, YAN Juan-wei, LIU Min, et al.Study of Web integration system based on portal and application[J].Computer Application Study,2007,24(7):208-210.
[2] 胡立春,武友新,張燁,等.LDAP環(huán)境下的統(tǒng)一用戶管理系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(4):823-825.HU Li-chun, WU You-xin, ZHANG Ye, et al.Study and implement of unified user management system based on LDAP[J].Computer Engineer and Design, 2007, 28(4):823-825.
[3] 宋曉宇.數(shù)據(jù)集成與應(yīng)用集成[M].北京:水利水電出版社,2008.
[4] 劉建圻,曾碧,鄭秀璋,等.基于RBAC權(quán)限管理模型的改進(jìn)與應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2008,28(9):2449-2451.LIU Jian-qi, ZENG bi, ZHANG Xiu-zhang, et al.Improvement and application of power management model based on RBAC[J].Computer Application, 2008, 28(9): 2449-2451.
[5] 孟凡榮,程潔,史會(huì)余,等.單點(diǎn)登錄模型的研究與應(yīng)用[J].微計(jì)算機(jī)信息, 2008, 24(7-3):164-165.MENG Fan-rong, CHENG Jie,SHI Hui-yu, et al.Study and application of single sign on model[J].Microcomputer Information,2008,24(7-3):164-165.
[6] 劉友生,陳劍平.Web數(shù)據(jù)互訪中的安全技術(shù)研究[J].微電子與計(jì)算機(jī),2008(8): 160-166.LIU You-sheng,CHEN Jian-ping.Security study ofweb data access[J].Micro-electronics&Computer,2008(8): 160-166.