于子元 潘 偉 王曉輝 戴 勇
[摘要]隨著身份管理重要性不斷提升,身份聯(lián)邦、面向架構(gòu)服務(wù)(SOA)以及Web2.0等理念已經(jīng)被注入到身份管理[5],企業(yè)系統(tǒng)面臨著進(jìn)化,傳統(tǒng)的身份管理的架構(gòu)和基于SOAP的身份管理模塊在實(shí)現(xiàn)進(jìn)化的需求上都存在著或多或少的限制。將以作者在IBM公司參與開(kāi)發(fā)的某企業(yè)管理系統(tǒng)為項(xiàng)目背景,討論如何將REST[1]風(fēng)格架構(gòu)應(yīng)用到身份管理系統(tǒng)之中。
[關(guān)鍵詞]REST 身份管理 Web Service SOA 企業(yè)級(jí)Web2.0
中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)0420043-01
一、引言
傳統(tǒng)的身份管理應(yīng)用只是單純的封裝身份信息,應(yīng)用只是單純的向域內(nèi)客戶端提供JAVA訪問(wèn)API,它無(wú)法向域外客戶端提供身份信息,也無(wú)法為非JAVA型的客戶端提供訪問(wèn)接口,所以傳統(tǒng)的身份管理應(yīng)用無(wú)法滿足系統(tǒng)進(jìn)化的需要。
Web service無(wú)疑是替換傳統(tǒng)身份管理應(yīng)用的最佳方案。SOAP形式的Web Service被廣泛的應(yīng)用,另一種風(fēng)格Web Service架構(gòu)REST也吸引著人們的眼球。REST架構(gòu)面向資源接口設(shè)計(jì)以及操作抽象簡(jiǎn)化了開(kāi)發(fā)者的不良設(shè)計(jì),并最大限度的應(yīng)用了HTTP作為應(yīng)用性協(xié)議的設(shè)計(jì)理念。相比于SOAP形式的Web Service,它擁有易用以及性能高效的優(yōu)點(diǎn)[6]。另外REST風(fēng)格架構(gòu)除了選擇傳統(tǒng)的xml作為數(shù)據(jù)承載,還有JSON,RSS,ATOM等形式,開(kāi)發(fā)人員來(lái)說(shuō)就能夠很好的mashup各種資源[1]。
REST風(fēng)格身份管理應(yīng)用(如圖2)不但向域內(nèi)模塊提供了SOA的整合接口,而且可以通過(guò)HTTP協(xié)議向域外的不同語(yǔ)言的客戶端模塊統(tǒng)一的提供身份信息。
二、Rest契約的設(shè)計(jì)
Rest風(fēng)格架構(gòu)的一個(gè)特點(diǎn)就是應(yīng)用客戶端和服務(wù)器互相分離,這樣可以減少客戶端和服務(wù)器端的耦合。只要架構(gòu)師定義出客戶端和服務(wù)器端之間的契約,也就是REST應(yīng)用中的URL形式的API,項(xiàng)目實(shí)現(xiàn)者就可以根據(jù)REST契約進(jìn)行客戶端和服務(wù)器端應(yīng)用的開(kāi)發(fā);同時(shí)在敏捷開(kāi)發(fā)的角度來(lái)看,REST契約也是測(cè)試驅(qū)動(dòng)開(kāi)發(fā)中最好的測(cè)試數(shù)據(jù)。以系統(tǒng)中“新建角色”為例,它的REST契約具體的設(shè)計(jì)實(shí)現(xiàn)如下:資源ID:http://wdshost
/idf/json/role。
HTTP提交模式:POST
參數(shù):{"roleName":"Admin","description":"old role","roleID":
"PlatformAdmin"}
三、REST架構(gòu)的實(shí)現(xiàn)
當(dāng)定義好REST契約,我們就可以關(guān)注服務(wù)器端的REST接口的實(shí)現(xiàn)。在項(xiàng)目中我們會(huì)通過(guò)Servlet技術(shù)構(gòu)建Rest風(fēng)格接口。
通過(guò)圖1,我們可以看到類的結(jié)構(gòu)圖,其中抽象類RoleDelegate的設(shè)計(jì)負(fù)責(zé)為“角色”資源的不同表現(xiàn)(XML、ATOM)提供接口。當(dāng)客戶端程序需要“角色”實(shí)體的ATOM表現(xiàn)形式的時(shí)候,我們只需要定義一個(gè)RoleATOMDelegate類去繼承RoleDelegate即可。
我們可以通過(guò)時(shí)序圖看到模塊的工作流程(如圖2)。
1.DispatchServlet接收到HTTP請(qǐng)求,判斷請(qǐng)求屬于Role角色實(shí)體相關(guān)的資源,轉(zhuǎn)接到RoleServlet進(jìn)行處理;
2.RoleServlet判斷HTTP請(qǐng)求類型為post,將HTTP請(qǐng)求委托給業(yè)務(wù)代理RoleJSONDelegate中的createRole()進(jìn)行處理;
3.業(yè)務(wù)代理通過(guò)和DAO層的通訊將對(duì)LDAP操作返回給Servlet;
4.DAO層將“添加”操作的結(jié)果返回給業(yè)務(wù)代理RoleJSONDelegate;
5.業(yè)務(wù)代理RoleJSONDelegate將操作結(jié)果封裝為JSON串,并放在HTTP響應(yīng)對(duì)象中返回給RoleDelegate;
6.RoleDelegate將包含著JSON格式消息的HTTP相應(yīng)對(duì)象返回給DispatchServelt,然后返回給客戶端。
四、總結(jié)
本文以IBM公司某企業(yè)管理系統(tǒng)為項(xiàng)目背景,討論了REST架構(gòu)在身份管理中的應(yīng)用。REST憑借自身有點(diǎn),已經(jīng)得到越來(lái)越多開(kāi)發(fā)者的關(guān)注,將Rest風(fēng)格推廣為像SOAP形式Web Service一樣成熟的規(guī)范體系,是REST發(fā)展的方向,也是我們?cè)趯W(xué)生的一個(gè)良好的研究課題。
參考文獻(xiàn):
[1]陳亮、陶宏才,基于REST的Web服務(wù)Mashup研究與應(yīng)用[J].成都信息工程學(xué)院學(xué)報(bào),2008年5期.
[2]徐斌、袁健,基于Web2.0的用戶權(quán)限管理研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2008年13期.
[3]Fielding R T. Architectural Styles and the Design of Network-based Software Architecture[A].Doctorial Dissertation,Dept.of Computer Science[C].Univ.of California,lrvine,2000.
作者簡(jiǎn)介:
于子元,東北師大計(jì)算機(jī)軟件與理論碩士;潘偉,導(dǎo)師、教授;王曉輝,東北師大計(jì)算機(jī)軟件與理論碩士;戴勇,東北師大計(jì)算機(jī)軟件與理論碩士。