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