论文部分内容阅读
[摘要]随着身份管理重要性不断提升,身份联邦、面向架构服务(SOA)以及Web2.0等理念已经被注入到身份管理[5],企业系统面临着进化,传统的身份管理的架构和基于SOAP的身份管理模块在实现进化的需求上都存在着或多或少的限制。将以作者在IBM公司参与开发的某企业管理系统为项目背景,讨论如何将REST[1]风格架构应用到身份管理系统之中。
[关键词]REST 身份管理 Web Service SOA 企业级Web2.0
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0420043-01
一、引言
传统的身份管理应用只是单纯的封装身份信息,应用只是单纯的向域内客户端提供JAVA访问API,它无法向域外客户端提供身份信息,也无法为非JAVA型的客户端提供访问接口,所以传统的身份管理应用无法满足系统进化的需要。
Web service无疑是替换传统身份管理应用的最佳方案。SOAP形式的Web Service被广泛的应用,另一种风格Web Service架构REST也吸引着人们的眼球。REST架构面向资源接口设计以及操作抽象简化了开发者的不良设计,并最大限度的应用了HTTP作为应用性协议的设计理念。相比于SOAP形式的Web Service,它拥有易用以及性能高效的优点[6]。另外REST风格架构除了选择传统的xml作为数据承载,还有JSON,RSS,ATOM等形式,开发人员来说就能够很好的mashup各种资源[1]。
REST风格身份管理应用(如图2)不但向域内模块提供了SOA的整合接口,而且可以通过HTTP协议向域外的不同语言的客户端模块统一的提供身份信息。
二、Rest契约的设计
Rest风格架构的一个特点就是应用客户端和服务器互相分离,这样可以减少客户端和服务器端的耦合。只要架构师定义出客户端和服务器端之间的契约,也就是REST应用中的URL形式的API,项目实现者就可以根据REST契约进行客户端和服务器端应用的开发;同时在敏捷开发的角度来看,REST契约也是测试驱动开发中最好的测试数据。以系统中“新建角色”为例,它的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请求委托给业务代理RoleJSONDelegate中的createRole()进行处理;
3.业务代理通过和DAO层的通讯将对LDAP操作返回给Servlet;
4.DAO层将“添加”操作的结果返回给业务代理RoleJSONDelegate;
5.业务代理RoleJSONDelegate将操作结果封装为JSON串,并放在HTTP响应对象中返回给RoleDelegate;
6.RoleDelegate将包含着JSON格式消息的HTTP相应对象返回给DispatchServelt,然后返回给客户端。
四、总结
本文以IBM公司某企业管理系统为项目背景,讨论了REST架构在身份管理中的应用。REST凭借自身有点,已经得到越来越多开发者的关注,将Rest风格推广为像SOAP形式Web Service一样成熟的规范体系,是REST发展的方向,也是我们在学生的一个良好的研究课题。
参考文献:
[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.
作者简介:
于子元,东北师大计算机软件与理论硕士;潘伟,导师、教授;王晓辉,东北师大计算机软件与理论硕士;戴勇,东北师大计算机软件与理论硕士。
[关键词]REST 身份管理 Web Service SOA 企业级Web2.0
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0420043-01
一、引言
传统的身份管理应用只是单纯的封装身份信息,应用只是单纯的向域内客户端提供JAVA访问API,它无法向域外客户端提供身份信息,也无法为非JAVA型的客户端提供访问接口,所以传统的身份管理应用无法满足系统进化的需要。
Web service无疑是替换传统身份管理应用的最佳方案。SOAP形式的Web Service被广泛的应用,另一种风格Web Service架构REST也吸引着人们的眼球。REST架构面向资源接口设计以及操作抽象简化了开发者的不良设计,并最大限度的应用了HTTP作为应用性协议的设计理念。相比于SOAP形式的Web Service,它拥有易用以及性能高效的优点[6]。另外REST风格架构除了选择传统的xml作为数据承载,还有JSON,RSS,ATOM等形式,开发人员来说就能够很好的mashup各种资源[1]。
REST风格身份管理应用(如图2)不但向域内模块提供了SOA的整合接口,而且可以通过HTTP协议向域外的不同语言的客户端模块统一的提供身份信息。
二、Rest契约的设计
Rest风格架构的一个特点就是应用客户端和服务器互相分离,这样可以减少客户端和服务器端的耦合。只要架构师定义出客户端和服务器端之间的契约,也就是REST应用中的URL形式的API,项目实现者就可以根据REST契约进行客户端和服务器端应用的开发;同时在敏捷开发的角度来看,REST契约也是测试驱动开发中最好的测试数据。以系统中“新建角色”为例,它的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请求委托给业务代理RoleJSONDelegate中的createRole()进行处理;
3.业务代理通过和DAO层的通讯将对LDAP操作返回给Servlet;
4.DAO层将“添加”操作的结果返回给业务代理RoleJSONDelegate;
5.业务代理RoleJSONDelegate将操作结果封装为JSON串,并放在HTTP响应对象中返回给RoleDelegate;
6.RoleDelegate将包含着JSON格式消息的HTTP相应对象返回给DispatchServelt,然后返回给客户端。
四、总结
本文以IBM公司某企业管理系统为项目背景,讨论了REST架构在身份管理中的应用。REST凭借自身有点,已经得到越来越多开发者的关注,将Rest风格推广为像SOAP形式Web Service一样成熟的规范体系,是REST发展的方向,也是我们在学生的一个良好的研究课题。
参考文献:
[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.
作者简介:
于子元,东北师大计算机软件与理论硕士;潘伟,导师、教授;王晓辉,东北师大计算机软件与理论硕士;戴勇,东北师大计算机软件与理论硕士。