2.Web服务组合安全性问题
在服务组合中,请求者与参加组合的各个服务通常处于不同的安全域,它们的安全需求、安全能力、认证方式、可信任程度都可能不一样,具有异构性。因此,无论采用哪种Web服务组合的实现方式,均需要考虑如何确保服务之间消息交互的安全性、如何选择不仅满足组合功能需求,同时安全策略兼容的Web服务参与组合、以及如何确保整个组合业务过程的安全性满足用户需求等问题。虽然目前存在不少专门针对Web服务的安全规范如WS-Security[4]、WS-Trust[5]、WS-Federation[6]等,但它们只能提供基本的安全保障,大部分安全标准都是在假定双方已经建立信任的基础上进行操作,而且它们的目的主要是保护单个Web服务的安全,对服务组合中的安全缺乏考虑[7]。为解决服务组合中存在的安全问题,对各参与方安全能力(security capability)和安全需求(security constraints)的描述,以及如何在Web服务组合流程中实现安全能力与安全需求的自动匹配是目前研究的重点。
3.基于AOP的Web服务安全组合实现技术
目前对Web服务组合实现方法的研究,大都关注于核心业务流程的实现方式,即如何发现服务、以什么样的顺序执行、以什么样的方法实现服务之间消息交互等问题,而对服务组合安全性的关注并不多[8]。以WS-BPEL为例,为了保持其语言的简洁性以及对关注点的分离,WS-BPEL侧重于Web服务组合中的功能需求,而对于安全表述、实现等非功能性需求并没有提供明确的支持,这样的情况必然导致非功能需求内容的实现分散在流程编码中无法实现模块化,从因而也就限制了这些内容的可重用性。
同样的问题在面向对象的编程方式中也存在,而一种称为AOP(aspect oriented program)的编程模式已经较为有效的解决了面向对象编程实现中存在的类似问题。
3.1 AOP架构
AOP是施乐公司帕洛阿尔托研究中心(Xerox PARC)在上世纪90年代提出的一种编程模式。它支持关注分离(separation of concerns)的概念, 通过对系统需求和实现的识别,可以将实现需求区分为:核心关注点和横切关注点。对于核心关注点,通常来说,实现这些关注点的模块是相互独立的,他们分别完成系统需要的业务逻辑,这些逻辑与具体的业务需求有关。而对于日志记录、数据一致性、授权、安全及性能优化等关注点而言,它们是各业务逻辑模块所共同需要的,这些内容分布于核心关注点的各处,因此称这些内容为横切关注点。AOP的目的就是要将横切关注点从业务逻辑类中分离出来,对相关的横切关注点封装,形成单独的“aspect”,然后根据需要编入(weave)这些”aspect”。在AOP语言中,定义了方面 (aspect)、连接点(join point),切入点(point cut),消息(advice)和编织(weave)等概念[9]。
• 连接点是程序执行过程中的某个点。比如在方法调用、条件检测、循环的开始或是读写动作处,连接点有一个与之相关联的上下文,任何一种面向方面语言都定义出了它所支持的连接点。
• 切入点的功能主要是捕获、识别程序流程中的连接点,一旦捕获了一个连接点,那么就可以在这些连接点的执行之前或之后做某些动作,这些动作在消息(advice)中指定。
• 消息指定到达特定切入点处应执行的代码.有3种把消息关联到连接点的方式:before、after和around。
• 方面是实现一个横切的模块,它包含了连接点、切入点、消息和方法代码,封装了与特定横切相关的所有内容。
• 编织是一个将横切织入到系统中的过程。它取程序代码和方面代码作为输入,输出经过编织后的融合代码.这个过程可以由编织器(weaver)静态或者动态的来完成。
在具体AOP编程实现时通常会经历以下三个步骤:首先,将横切关注点从业务逻辑类中分离出来;其次,对横切关注点封装,形成单独的“aspect”;最后,通过切入点捕获、识别程序流程中的连接点,实现将“aspect”植入现有业务逻辑中。这种将分散的横切(cross-cutting)代码通过封装入aspect,在需要时动态织入的实现方式,较好的解决了在OOP实现中存在非业务逻辑无法模块化的问题。
AOP技术的优势,使得致力于Web 服务组合的研究者开始考虑是否可以将AOP的实现思想运用于解决访问控制、身份认证、安全需求等非功能需求实现代码分散于服务组合流程实现代码中的问题。Anis[10]等人对此作了有益探索,提出了AO4BPEL框架,能有效的将AOP技术运用于WEB服务组合实现中。
3.2 AO4BPEL的安全服务组合实现
AO4BPEL是Anis提出的一种基于WS-BPEL的服务组合框架,通过将AOP技术引入到服务组合流程的实现中,以解决访问控制、身份认证、计费、审计等非功能性需求分散在web服务组合流程编码中,无法实现模块化的问题。此外,它还致力于实现web服务组合流程在执行过程中的动态调整。通过对原有BEPL引擎的扩展,使其能支持aspect的植入。这里重点阐述它在安全服务组合中的应用[11,12]。
(责任编辑:adminadmin2008)