



摘要:本文從數(shù)字化校園建設(shè)的發(fā)展階段和實(shí)際要求出發(fā),以數(shù)字化校園理念為基礎(chǔ),采用最新的Web服務(wù)技術(shù),構(gòu)建一個(gè)高效、安全、松散藕合和高度集成的數(shù)字化校園框架體系,并對(duì)所采用的核心技術(shù)進(jìn)行研究和探索。
關(guān)鍵詞:Web服務(wù);數(shù)字化校園;統(tǒng)一描述、發(fā)現(xiàn)和集成;單點(diǎn)登錄;CA認(rèn)證
1 引言
社會(huì)信息化的推進(jìn)使得校園網(wǎng)得以迅速的發(fā)展,越來(lái)越多的校園依托校園網(wǎng)建立起了各種應(yīng)用系統(tǒng),如辦公自動(dòng)化系統(tǒng)、教務(wù)管理系統(tǒng)、科研管理系統(tǒng)、人事管理系統(tǒng)、后勤管理系統(tǒng)、學(xué)生管理系統(tǒng)等。在前期建設(shè)階段,由于沒(méi)有做好統(tǒng)一的規(guī)劃,各職能機(jī)構(gòu)都建立了各自的信息系統(tǒng),由于編程語(yǔ)言差異、數(shù)據(jù)庫(kù)異構(gòu)、數(shù)據(jù)標(biāo)準(zhǔn)不統(tǒng)一等原因,各個(gè)系統(tǒng)之間無(wú)法進(jìn)行正常通信,為用戶造成了很多不便。因而,本課題就從數(shù)字化校園建設(shè)的發(fā)展階段和實(shí)際要求出發(fā),以數(shù)字化校園理念為基礎(chǔ),采用最新的Web服務(wù)技術(shù),構(gòu)建一個(gè)高效、安全、松散藕合和高度集成的數(shù)字化校園框架體系,并對(duì)所采用的核心技術(shù)進(jìn)行研究和探索。
2 Web服務(wù)簡(jiǎn)介
Web服務(wù)是一種部署在Web上的對(duì)象,是一種可通過(guò)標(biāo)準(zhǔn)Internet協(xié)議訪問(wèn)的自包含的、自描述的、模塊化的、可編程的應(yīng)用邏輯,是對(duì)象/組件技術(shù)在Internet中的延伸,可以通過(guò)Web發(fā)布、查找和調(diào)用。其協(xié)議包括:
(1)XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)
由標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)發(fā)展而來(lái),現(xiàn)已成為一種人們廣泛接受的用于描述數(shù)據(jù)和創(chuàng)建標(biāo)記語(yǔ)言的標(biāo)準(zhǔn)。
(2)SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)
作為Web服務(wù)的標(biāo)準(zhǔn)通信協(xié)議。簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)是一個(gè)用來(lái)在分散、分布式的環(huán)境中交換信息的簡(jiǎn)單協(xié)議,它是一個(gè)基于XML的協(xié)議。
(3)WSDL (Web Services Description Language)
描述Web服務(wù)的XML格式語(yǔ)言。它用來(lái)定義Web服務(wù),并描述如何訪問(wèn)這些服務(wù)。
(4)UDDI(Universal Description,Discovery and Integration)
一套面向Web服務(wù)的信息注冊(cè)中心的實(shí)際標(biāo)準(zhǔn)和規(guī)范。創(chuàng)建UDDI注冊(cè)中心的目的是實(shí)現(xiàn)Web服務(wù)的發(fā)布和發(fā)現(xiàn),可以利用UDDI規(guī)范在Web上建立和發(fā)現(xiàn)服務(wù)。
以上這些協(xié)議規(guī)范加上廣泛使用的傳輸層和網(wǎng)絡(luò)層的通用標(biāo)準(zhǔn)(TCP/IP、HTTP、SMTP等)就能實(shí)現(xiàn)一個(gè)完整的Web服務(wù)體系架構(gòu)。
3 Web服務(wù)體系結(jié)構(gòu)
Web服務(wù)體系結(jié)構(gòu)SOA,清晰地描述了各角色之間的交互,如圖1所示。SOA體系結(jié)構(gòu)中共有3種角色:(1)Service Provider:服務(wù)提供者。為其他服務(wù)和用戶提供已有的功能,從體系結(jié)構(gòu)上看,它是指提供服務(wù)訪問(wèn)的平臺(tái);(2) Service Requester:服務(wù)請(qǐng)求者。需要某種特定服務(wù)的企業(yè)或個(gè)人,是服務(wù)功能的使用者,從體系結(jié)構(gòu)上看,它是指查找和調(diào)用服務(wù)的客戶端程序;(3) Service Registry:服務(wù)代理。用來(lái)存儲(chǔ)服務(wù)描述信息的信息庫(kù),是服務(wù)提供者發(fā)布服務(wù)和服務(wù)請(qǐng)求者查找服務(wù)并獲取服務(wù)的綁定信息的場(chǎng)所,充當(dāng)管理者的角色。
在Web服務(wù)的角色之間進(jìn)行了3種操作:(1)發(fā)布:使服務(wù)提供者可以向服務(wù)代理注冊(cè)自己的功能及訪問(wèn)接口;(2)查找:使服務(wù)請(qǐng)求者可以通過(guò)服務(wù)代理查找特定種類的服務(wù);(3)綁定:使服務(wù)請(qǐng)求者能夠真正使用服務(wù)提供者所提供的服務(wù)。
4 基于Web Services設(shè)計(jì)數(shù)字化校園
4.1 系統(tǒng)概述
整個(gè)系統(tǒng)旨在整個(gè)校園的不同部門機(jī)構(gòu),不同平臺(tái),但與校園運(yùn)作相關(guān)部門分布式協(xié)同處理業(yè)務(wù),并實(shí)現(xiàn)系統(tǒng)跨平臺(tái)跨部門的無(wú)縫連接。在設(shè)計(jì)模式上,對(duì)于校園的規(guī)模沒(méi)有明確界限,可以通過(guò)Web服務(wù)進(jìn)行高性價(jià)比的平臺(tái)集成,因而系統(tǒng)規(guī)模易于擴(kuò)展。
數(shù)字化校園總體架構(gòu)如圖2所示。
4.2 UDDI
4.2.1 UDDI概述
UDDI(Universal Description、Discovery and Integration) [1],是一套面向Web服務(wù)的信息注冊(cè)中心的實(shí)際標(biāo)準(zhǔn)和規(guī)范。創(chuàng)建UDDI注冊(cè)中心的目的是實(shí)現(xiàn)Web服務(wù)的發(fā)布和發(fā)現(xiàn),可以利用UDDI規(guī)范在Web上建立和發(fā)現(xiàn)服務(wù)。簡(jiǎn)單的說(shuō),Web服務(wù)是一種開發(fā)的規(guī)范,使得通過(guò)網(wǎng)絡(luò)可以對(duì)基于規(guī)范開發(fā)的各種應(yīng)用進(jìn)行調(diào)用、整合,從而在互聯(lián)網(wǎng)上完成更復(fù)雜的任務(wù),UDDI就是Web服務(wù)的服務(wù)中介。目前,關(guān)于Web服務(wù)的幾個(gè)底層標(biāo)準(zhǔn)協(xié)議,業(yè)界已經(jīng)基本達(dá)成共識(shí),包括XML、SOAP、WSDL、UDDI等。
4.2.2 UDDI在Web服務(wù)中的位置
如圖3所示,UDDI包含于完整的Web 服務(wù)協(xié)議棧之內(nèi),是協(xié)議棧基礎(chǔ)的主要部件之一,服務(wù)提供者和服務(wù)請(qǐng)求者通過(guò)其來(lái)完成Web服務(wù)的創(chuàng)建、說(shuō)明、發(fā)現(xiàn)和調(diào)用[2]。
由于UDDI的構(gòu)建是基于網(wǎng)絡(luò)傳輸層和基于SOAP的XML消息傳輸層之上的。Web服務(wù)描述語(yǔ)言(Web Services Description Language,WSDL)為UDDI提供了統(tǒng)一的XML詞匯供描述Web服務(wù)及其接口使用。比如使用WSFL(Web Services Flow Language,Web服務(wù)流語(yǔ)言)的Web服務(wù)工作流描述以及安全性,管理和服務(wù)質(zhì)量,解決系統(tǒng)的可靠性和可用性問(wèn)題。
4.2.3 UDDI的商業(yè)注冊(cè)與UDDI商業(yè)注冊(cè)中心
UDDI的核心組件是UDDI商業(yè)注冊(cè),它使用一個(gè)XML文檔來(lái)描述企業(yè)及其提供的Web服務(wù)。從概念上來(lái)說(shuō),UDDI商業(yè)注冊(cè)所提供的信息包含三個(gè)部分:“白頁(yè)(White Page)”,包括了地址,聯(lián)系方法,和已知的企業(yè)標(biāo)識(shí);“黃頁(yè)(Yellow page)”包括了基于標(biāo)準(zhǔn)分類法的行業(yè)類別;“綠頁(yè)(Green Page)”,則包括了關(guān)于該企業(yè)所提供的Web服務(wù)的技術(shù)信息,其形式可能是一些指向文件或是URL的指針,而這些文件或URL是為服務(wù)發(fā)現(xiàn)機(jī)制服務(wù)的。所有的UDDI商業(yè)注冊(cè)信息存儲(chǔ)在UDDI商業(yè)注冊(cè)中心中。以上3種信息,UDDI定義了4種核心數(shù)據(jù)結(jié)構(gòu)類型加以描述,簡(jiǎn)單介紹如下[3]。
(1)商業(yè)實(shí)體信息:businessEntity元素
在商業(yè)領(lǐng)域內(nèi),合作伙伴和潛在的合作伙伴都期望能準(zhǔn)確地定位到商業(yè)實(shí)體所能提供的服務(wù)或產(chǎn)品的相關(guān)信息,并把這些信息作為了解企業(yè)的開始。而在技術(shù)領(lǐng)域,技術(shù)人員、程序員或應(yīng)用程序都期望能知道他們需要集成的商業(yè)實(shí)體的名稱和一些關(guān)鍵性的標(biāo)識(shí),該商業(yè)實(shí)體是屬于哪個(gè)具體工業(yè)分類之類的分類信息,以及聯(lián)絡(luò)方法(包括Email、電話、URL)等。支持對(duì)UDDI商業(yè)注冊(cè)的商業(yè)信息發(fā)布和發(fā)現(xiàn)的核心XML元素都包含在\"businessEntity\"結(jié)構(gòu)中。這個(gè)結(jié)構(gòu)是商業(yè)實(shí)體專屬信息集的最高層的數(shù)據(jù)容器,位于整個(gè)信息結(jié)構(gòu)的最上層。
(2)商業(yè)服務(wù)信息:businessService元素
businessService結(jié)構(gòu)將一系列有關(guān)商業(yè)流程或分類目錄的Web 服務(wù)的描述組合到一起。businessService和下面要提到的bindingTemplate一起構(gòu)成了“綠頁(yè)”信息。其中,一個(gè)可能的商業(yè)流程的例子是一組相關(guān)的Web服務(wù)信息,包括采購(gòu)服務(wù)、運(yùn)輸服務(wù)和其它的高層商業(yè)流程。這些服務(wù)都將是提供這些商業(yè)流程服務(wù)的商業(yè)實(shí)體所需要注冊(cè)的Web服務(wù)。
這些businessService的信息集合可以再次加以分類,使Web應(yīng)用服務(wù)的描述可以按不同的行業(yè)、產(chǎn)品、服務(wù)類型或是地域劃分來(lái)進(jìn)行。分類的方法的機(jī)制與businessEntity是類似的。
(3)技術(shù)綁定信息:bindingTemplate元素
對(duì)于每一個(gè)businessService,存在一個(gè)或多個(gè)Web服務(wù)的技術(shù)描述bindingTemplate。這些技術(shù)描述包括應(yīng)用程序連接遠(yuǎn)程Web服務(wù)并與之通訊所必須的信息。這些信息包括Web應(yīng)用服務(wù)的地址、應(yīng)用服務(wù)宿主和調(diào)用服務(wù)前必須調(diào)用的附加應(yīng)用服務(wù)等。另外,通過(guò)附加的特性還可以實(shí)現(xiàn)一些復(fù)雜的路由選擇,諸如負(fù)載平衡等。
(4)元技術(shù)信息:tModel元素
調(diào)用一個(gè)服務(wù)所需要的信息是在bindingTemplate的結(jié)構(gòu)中定義的。不過(guò)一般來(lái)說(shuō),僅知道Web服務(wù)所在的地址是不夠的。例如,如果知道合作伙伴提供一個(gè)Web服務(wù)來(lái)讓我下訂單,同時(shí)也知道這個(gè)服務(wù)的URL,不過(guò)如果不知道一些具體的信息,如訂單的具體格式,應(yīng)該使用的協(xié)議,需要采用的安全機(jī)制,調(diào)用返回的響應(yīng)格式等,那樣的話,通過(guò)Web服務(wù)將兩個(gè)系統(tǒng)集成起來(lái)仍然是非常困難的。
當(dāng)一個(gè)程序需要調(diào)用某個(gè)特定的Web服務(wù)時(shí),必須根據(jù)應(yīng)用要求得到了足夠充分的調(diào)用規(guī)范等相關(guān)信息,以使調(diào)用被正確地執(zhí)行。因此,每一個(gè)bindingTemplate元素都包含一個(gè)特殊的元素,該元素包含了一個(gè)列表,列表的每個(gè)子元素分別是一個(gè)調(diào)用規(guī)范的引用。這些引用作為一個(gè)標(biāo)識(shí)符的雜湊集合 ,組成了類似指紋的技術(shù)標(biāo)識(shí),用來(lái)查找、識(shí)別實(shí)現(xiàn)了給定行為或編程接口的Web服務(wù)。
4.3 單點(diǎn)登錄
4.3.1單點(diǎn)登錄概述
單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱為SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是用戶只需進(jìn)行一次登錄注冊(cè),就可以訪問(wèn)多個(gè)相互聯(lián)系的應(yīng)用系統(tǒng),而不必反復(fù)進(jìn)行身份認(rèn)證[4]。
4.3.2單點(diǎn)登錄設(shè)計(jì)
通過(guò)Web服務(wù)實(shí)現(xiàn)用戶身份驗(yàn)證,驗(yàn)證通過(guò)后將自動(dòng)隨機(jī)生成ticket,并傳給用戶,當(dāng)用戶訪問(wèn)其他應(yīng)用系統(tǒng)時(shí),僅需對(duì)ticket進(jìn)行合法性驗(yàn)證。在這里,Web服務(wù)只需實(shí)現(xiàn)用戶登錄基本信息驗(yàn)證、ticket生成、ticket合法性驗(yàn)證這三個(gè)功能,就可以進(jìn)行統(tǒng)一身份認(rèn)證。單點(diǎn)登錄模型的體系結(jié)構(gòu)如圖4所示[5]。
4.3.3單點(diǎn)登錄實(shí)現(xiàn)
服務(wù)器端在開發(fā)時(shí)所使用的操作系統(tǒng)為Windows Server2003,數(shù)據(jù)庫(kù)為SQL Server2000,在Eclipse開發(fā)環(huán)境下進(jìn)行開發(fā)調(diào)試,使用Tomcat 5作為服務(wù)器,axis2作為SOAP 搜索引擎。當(dāng)環(huán)境部署完成之后,進(jìn)行應(yīng)用程序的開發(fā),將單點(diǎn)登錄系統(tǒng)以定制方式發(fā)布為 Web服務(wù),成為服務(wù)提供者,為校園不同部門機(jī)構(gòu)門戶提供服務(wù)。
4.4 CA認(rèn)證中心
4.4.1 CA簡(jiǎn)介
CA(Certificate Authority)[6]是數(shù)字證書認(rèn)證中心的簡(jiǎn)稱,是指發(fā)放、管理、廢除數(shù)字證書的機(jī)構(gòu)。CA的作用是檢查證書持有者身份的合法性,并簽發(fā)證書(在證書上簽字),以防證書被偽造或篡改,以及對(duì)證書和密鑰進(jìn)行管理[7]。
4.4.2公鑰體系結(jié)構(gòu)中的一些基本概念與結(jié)構(gòu)組成
(1)密鑰對(duì)
在基于公鑰體系的安全系統(tǒng)中,密鑰是成對(duì)生成的,每對(duì)密鑰由一個(gè)公鑰和一個(gè)私鑰組成。在實(shí)際應(yīng)用中,私鑰由擁有者自己保存,而公鑰則需要公布于眾。為了使基于公鑰體系的業(yè)務(wù)能夠廣泛應(yīng)用,一個(gè)基礎(chǔ)性關(guān)鍵的問(wèn)題就是公鑰的分發(fā)與管理。
公鑰本身并沒(méi)有什么標(biāo)記,僅從公鑰本身不能判別公鑰的主人是誰(shuí)。
在很小的范圍內(nèi),比如A和B這樣的兩個(gè)小集體,他們之間相互信任,交換公鑰,在互聯(lián)網(wǎng)上通訊,沒(méi)有什么問(wèn)題。這個(gè)集體再稍大一點(diǎn),也許彼此信任也不成問(wèn)題,但從法律角度講這種信任也是有問(wèn)題的。如再大一點(diǎn),信任問(wèn)題就成了一個(gè)大問(wèn)題。
(2)證書
互聯(lián)網(wǎng)絡(luò)的用戶群絕不是幾個(gè)人互相信任的小集體,在這個(gè)用戶群中,從法律角度講用戶彼此之間都不能輕易信任。所以公鑰加密體系采取了另一個(gè)辦法,將公鑰和公鑰的主人名字聯(lián)系在一起,再請(qǐng)一個(gè)大家都信得過(guò)有信譽(yù)的公正、權(quán)威機(jī)構(gòu)確認(rèn),并加上這個(gè)權(quán)威機(jī)構(gòu)的簽名,這就形成了證書。
由于證書上有權(quán)威機(jī)構(gòu)的簽字,所以大家都認(rèn)為證書上的內(nèi)容是可信任的;又由于證書上有主人的名字等身份信息,別人就很容易地知道公鑰的主人是誰(shuí)。
(3)CA
CA也擁有一個(gè)證書(內(nèi)含公鑰),當(dāng)然,它也有自己的私鑰,所以它有簽字的能力。網(wǎng)上的公眾用戶通過(guò)驗(yàn)證CA的簽字從而信任CA,任何人都應(yīng)該可以得到CA的證書(含公鑰),用以驗(yàn)證它所簽發(fā)的證書。
如果用戶想得到一份屬于自己的證書,他應(yīng)先向CA提出申請(qǐng)。在CA判明申請(qǐng)者的身份后,便為他分配一個(gè)公鑰,并且CA將該公鑰與申請(qǐng)者的身份信息綁在一起,并為之簽字后,便形成證書發(fā)給那個(gè)用戶(申請(qǐng)者)。
如果一個(gè)用戶想鑒別另一個(gè)證書的真?zhèn)危陀肅A的公鑰對(duì)那個(gè)證書上的簽字進(jìn)行驗(yàn)證(如前所述,CA簽字實(shí)際上是經(jīng)過(guò)CA私鑰加密的信息,簽字驗(yàn)證的過(guò)程還伴隨使用CA公鑰解密的過(guò)程),一經(jīng)驗(yàn)證通過(guò),該證書就被認(rèn)為是有效的。
CA除了簽發(fā)證書之外,它的另一個(gè)重要作用是證書和密鑰的管理。
由此可見(jiàn),證書就是用戶在網(wǎng)上的電子個(gè)人身份證,同日常生活中使用的個(gè)人身份證作用一樣。CA相當(dāng)于網(wǎng)上公安局,專門發(fā)放、驗(yàn)證身份證。
4.4.3認(rèn)證模塊的實(shí)現(xiàn)
(1)訪問(wèn)控制的設(shè)計(jì)思想
用戶登錄系統(tǒng)時(shí),客戶端和服務(wù)器端利用數(shù)字證書進(jìn)行雙向認(rèn)證,建立SSL連接,然后查詢數(shù)據(jù)庫(kù),對(duì)用戶進(jìn)行授權(quán),并將權(quán)限集合保存在會(huì)話中。之后的交互中,用戶每次發(fā)出請(qǐng)求,系統(tǒng)都先進(jìn)行權(quán)限判定的過(guò)濾,以實(shí)現(xiàn)對(duì)靜態(tài)資源(靜態(tài)HTML頁(yè)面、圖片資源等)與動(dòng)態(tài)資源(JSP頁(yè)面、Servlet和Bean等)的細(xì)粒度的訪問(wèn)控制,為系統(tǒng)的安全訪問(wèn)提供有效保障。
(2)數(shù)字證書簽發(fā)工具
通過(guò)SWING技術(shù)開發(fā)簡(jiǎn)易的證書制作工具生成根證書、簽署證書和導(dǎo)出公鑰證書等。
生成根證書的關(guān)鍵代碼如下:
//根據(jù)所給算法實(shí)例化密鑰對(duì)產(chǎn)生器
CertAndKeyGen keyPair=new
CertAndKeyGen(keyAlg,sigAlg);
//產(chǎn)生長(zhǎng)度為keySize的密鑰對(duì)
keyPair.generate(keySize);
PrivateKey priKey=keyPair.getPrivateKey();
//根據(jù)所填信息,創(chuàng)建X500Name實(shí)例
X500Name x500Name:ereateX500Name();
//生成自簽名證書
X509 Certificate eert=keyPair.getSelfCertifieate
(x500Name,validity木24木60術(shù)60);
//設(shè)置證書鏈
X509Certifleate[]chain={cert};
ks.setKeyEntry(alias,priKey,keyPass,chain);
4.4.4配置SSL
修改IBMHttpServer/conf/httpd.conf文件,在最下面增加:
LoadModule ibm_ssl_module
modules/IBMModuleSSL128.dll
Listen 80
Listen 443
Keyfile F:/NEW/key.kdb
SSLDisable
SSLV2Timeout 100
SSLV3Timeout 1000
ServerName netsoft-4d52657
ServerName netsoft-4d52657
SSLEnable
SSLClientAuth optional
5 結(jié)束語(yǔ)
Web服務(wù)作為一種新興的技術(shù),將各應(yīng)用系統(tǒng)平臺(tái)進(jìn)行了有效的無(wú)縫連接,并結(jié)合了單點(diǎn)登錄模型,構(gòu)建了一個(gè)統(tǒng)一的用戶認(rèn)證管理平臺(tái),使用戶在各平臺(tái)間的轉(zhuǎn)換更為便捷。同時(shí),也更方便了各個(gè)應(yīng)用系統(tǒng)的管理。而CA認(rèn)證的加入,更提高了系統(tǒng)的安全性和保密性。綜上,Web服務(wù)在校園網(wǎng)絡(luò)中的應(yīng)用,無(wú)疑對(duì)數(shù)字化校園的構(gòu)建起到了巨大的推動(dòng)作用。
參考文獻(xiàn)
[1] 王曉虎,葉榮華.UDDI技術(shù)及其在校園網(wǎng)中的應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2006,28(6):30-35.
[2] 沈伯青,楊宗凱.Web服務(wù)的基石:UDDI技術(shù)[J].計(jì)算機(jī)工程與應(yīng)用,2003(3):147-183.
[3] 芮雄健,王忠民. UDDI的原理與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(6):1602-1605.
[4] 賈宗星,董麗麗.基于Web Services單點(diǎn)登錄系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2006(9):62-64.
[5] 李朝峰,江濤.基于Web Services技術(shù)的單點(diǎn)登錄模型的研究與設(shè)計(jì)[J].民營(yíng)科技,2009(8):23-23.
[6] 江為強(qiáng),楊義先,黃正全.基于J2EE體系結(jié)構(gòu)的CA認(rèn)證系統(tǒng)的研究[J].武漢理工大學(xué)學(xué)報(bào),2008,30(2):105-109.
[7] 胡喜玲.數(shù)字認(rèn)證服務(wù)在校園網(wǎng)上的應(yīng)用[J].微計(jì)算機(jī)應(yīng)用,2004,25(3):308-311.