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