使用安全注解的组合应用的制作方法

文档序号:7920450阅读:104来源:国知局

专利名称::使用安全注解的组合应用的制作方法
技术领域
:本公开一般涉及安全计算。
背景技术
:组合应用(compositeapplication)是使用作为网络服务提供的数据和功能的应用,这些数据和功能由面向服务的应用平台和现有的封装和定制的应用来提供。由它们自身的业务逻辑和用户接口所支持,组合应用将这些网络服务组成以使用为中心(usage-centric)的处理和视图。在这点上,组合能够通过在不断发展的组合应用中重新安排现有的组件而使它们被重新使用。因此,组合应用能够使业务情景和/或用户专用处理跨越多个功能区域。
发明内容诸如通过对基本的安全策略、目标、或基础结构的细节进行抽象,为组合应用开发者提供了一种模型驱动的安全组合框架,以便直截了当地将安全目标整合到基于脚本的、轻量级的組合应用中。根据一个一般的实施例,计算机实现的方法包括访问用于业务流程的规范,该规范包括定义安全意图的安全注解,以及定义至少一部分业务流程和调用外部服务的任务。调用与安全注解相关联的安全模式,并且基于所调用的安全模式来确认与满足安全意图的外部服务相关联的服务提供者。使用所确认的服务提供者来调用业务流程。实施例可以包括一个或多个以下特征。例如,安全注解可以使用策略域专用语言来表达。安全注解可以被解析。安全策略数据库可以基于安全注解被更新。使用所确认的服务提供者调用业务流程还可以包括基于安全意图产生用于所确认的服务提供者的安全服务代理,该安全服务代理管理对外部服务的安全服务调用操作,并使用该安全服务代理调用外部服务。安全服务代理可以被加密和存储。所存储的安全服务代理可以被检索,并且与该安全服务代理相关联的安全服务调用操作可以被调用。可以使用该安全服务代理/人外部服务中接收和处理响应。在另外的实例中,确认服务提供者还可以包括访问用于服务提供者列表的服务访问信息,该服务访问信息包括服务终点和服务操作签名;访问为能;并且将为每个服务提供者所存储的安全目标和所存储的安全性能与安全意图相关联的安全目标和安全性能作比较。确认服务提供者还包括基于为每个服务提供者所存储的安全目标和所存储的安全性能的比较,选择所选定的服务提供者,将所选定的服务提供者存储在知识库中作为所确认的服务提供者,以及基于存储所选定的服务提供者产生指示服务提供者选择流程已经完成的事件。在另外的实例中,服务可以是后端企业服务、外部企业到企业服务、或本地服务。安全注解可以包括表示安全意图的变量,其中使用该变量调用安全模式。安全意图可以声明在使用外部网络服务时的外部强制策略,声明可以在公开所调用的业务流程作为网络服务时的策略,声明可以在任务要求人的交互时的基于任务的授权要求,以及可以声明基于任务的授权约束,该授权约束指定了执行任务的顺序。安全意图可以指定被允许执行任务的角色。而且,在其他的实例中安全意图可以指定执行任务的顺序。调用业务流程还可以包括执行任务。安全模式可以包括第一入口点,用于在服务提供者被确认之前触发安全意图强制;第二入口点,用于在任务被执行之前触发安全意图强制;以及第三入口点,用于在任务被执行之后触发安全意图强制。调用业务流程还可以包括如果服务提供者尚未被确认则选择第一入口点,如果任务尚未被执行则选择第二入口点,以及如果任务已经被执行则选择第三入口点。确认服务提供者可以包括产生服务请求,以及基于安全模式安全增强服务请求。安全意图可以定义消息机密性、加密安全意图、完整性意图、角色分配意图、或任务执行顺序意图。根据另一个一般实施例,计算机程序产品有形地体现在机器可读的介质中。该计算机程序产品包括指令,该指令在被机器读出时运行,以促使数据处理装置访问用于业务流程的规范,该规范包括定义安全意图的安全注解,和定义至少一部分业务流程以及调用外部服务的任务。该程序产品还包括指令,该指令运行以促使数据处理装置调用与安全注解相关联的安全模式,基于所调用的安全模式确认与满足安全意图的外部服务相关联的服务提供者,以及使用所确认的服务提供者调用业务流程。根据另一个一般实施例,设备包括存储介质和处理器。该存储介质存储用于业务流程的规范,该规范包括定义安全意图的安全注解,和定义至少一部分业务流程以及调用外部服务的任务。该处理器^J己置成调用与安全注解相关联的安全模式,基于所调用的安全模式,确认与满足安全意图的外部服务相关联的服务提供者,以及使用所确认的服务提供者调用业务流程。根据另一个一般实施例,方法包括应用安全框架到业务流程,该安全框架包括定义阶段,确认组合应用的安全目标;实现阶段,实现用于完成所确认的安全目标的安全模式;以及声明阶段,使用基于安全模式的组合应用中的安全注解来实现所确认的安全目标。该方法还包括基于应用安全框架引导外部策略协商指定组合应用和外部服务之间的公共策略,对组合应用和外部服务之间的每个交互强制公共策略,以及基于安全目标调整外部服务对本地月良务和对象的访问。实施例可以包括一个或多个以下特征。例如,所述定义阶^殳还可以包括安全风险分析组件,执行安全风险分析;安全模式定义组件,准备指定作为安全模式的安全解决方案;以及安全意图定义组件,定义通过组合安全模式实现的安全意图。执行安全风险分析还包括分析业务流程中的威胁,以及确认业务流程中的相关风险。执行安全风险分析还可以包括确认与业务流程相关联的服务交互机制,以及对所确认的服务交互机制执行威胁分析。准备安全解决方案还包括提供能使安全目标统一定义的意图本体(ontology)。所述实现阶段可以包括安全模式实现组件,将与域无关(domain-independent)模式绑定到特定的上下文,从而实现安全模式;以及安全模式供应组件,存储所实现的安全模式到模式库。所述声明阶段还可以包括应用级的意图声明组件,声明组合应用所遵循的安全意图;以及服务级的意图声明组件,在公开组合应用作为服务之前定义到本地组件的安全意图。该方法还可以包括使用策略更新协议产生授权策略和向后端策略数据库插入丟失的策略。安全意图可以指定被允许执行任务的角色或任务执行的顺序。使用策略域专用语言可以表达安全注解。安全意图可以声明在使用外部网络服务时的外部强制策略,可以声明在公开所调用的业务流程作为网络服务时的策略,可以声明在任务要求人的交互时的基于任务的授权要求,以及可以声明基于任务的授权约束,该授权约束指定了任务执行的顺序。根据另一个一般的实施例,计算机程序产品有形地体现在机器可读的介质中,该计算机程序产品包括指令,该指令在被机器读出时运行,以促使数据处理装置应用安全框架到业务流程,该安全框架包括定义阶段,确认组合应用的安全目标;实现阶段,实现用于完成所确认的安全目标的安全模式;以及声明阶段,使用基于安全模式的组合应用中的安全注解来实现所确认的安全目标。该计算机程序产品还包括指令,该指令在被机器读出时运行,以促使数据处理装置基于应用安全框架来引导外部策略协商指定组合应用和外部服务之间的公共策略,对组合应用和外部服务之间的每个交互强制公共策略,以及基于安全目标调整外部服务对本地服务和对象的访问。根据另一个一般实施例,系统包括被配置成应用安全框架到业务流程的企业,该安全框架包括定义阶段,确认组合应用的安全目标;实现阶段,实现用于完成所确认的安全目标的安全模式;以及声明阶段,使用基于安全模式的组合应用中的安全注解来实现所确认的安全目标。该企业还被配置成基于应用安全框架引导外部策略协商指定组合应用和外部服务之间的公共策略,对组合应用和外部服务之间的每个交互强制公共策略,以及基于安全目标调整外部服务对本地服务和对象的访问。一个或多个的实施例的细节在以下的附图和描述中阐述。本公开的其他潜在的特征和优点将从说明书和附图中以及从权利要求中更加明显。图1图示了示例性业务流程,其中包括以协调的顺序执行的一系列任务或活动。图2是图示用于使用安全注解来实现组合应用的示例性系统架构的框图。图3和图16是图示使用安全注解实现组合应用的示例性流程。图4是描述在设计时由业务流程的开发者准备业务流程规范的泳道图(swimdiagram)。图5是描述业务流程的调用的泳道图。图6是图示可以被组合应用开发框架调用的服务的种类的框图。图7和图8描述了开发^f吏用增强框架的组合应用的不同阶段。图9图示了用于说明业务流程中的安全性的模型。图10是图示为组合应用的开发提供设计和运行环境的安全性监视器的框图。图11是图示安全服务之间的示例性关系的框图。图12和图13图示了对示例性业务流程的运行时强制(run-timeenforcement)。图14图示了示例性系统的外观。图15是图示在图14中所示的设备的内部架构的框图。全文中相似的参考标号代表相应的元件。具体实施例方式组合业务应用(或"组合应用")是通过组合多个组件或服务而建立的,这些组件或服务诸如单独的网络服务、或者从其他应用中或整个系统中选择的功能,这些应用和系统的输出被封装作为网络服务。组合业务应用可以合并本地应用逻辑的安排(orchestration)以控制合成的网络服务何时以及怎样彼此交互来产生新派生的功能性。因此,组合应用的功能从面向服务架构(SOA)中不同的源来进^f亍定义。因为在开发关键任务的面向服务的组合应用时,安全性是主要考虑因素之一,所以可以根据一个一般性实施例,通过在安全模式下合并多个服务来创建强健的组合应用。按照业务驱动应用安全方法,业务应用的安全性要求(或"安全意图")在业务流程规范级中被表达为安全注解,并且自动产生满足对应于该安全注解的安全性要求的相关联安全基础结构。这些表达业务应用的安全目标的安全注解,可以由经过安全训练的业务流程开发者在业务流程规范中来表达。这些注解可以从安全模式库中选择并通过使用域专用语言对特定的应用进行实例化。当业务流程开发者部署应用时,自动执行与实现安全目标(诸如服务选择、服务绑定和安全基础结构的产生)相关联的操作流程。例如,可以使用在组合业务流程和服务提供者双方的安全性要求与性能之间进行匹配的流程,来进行服务提供者的选择。业务流程开发者可以因此声明运行时间的安全目标,而不用专门的安全开发者的参与。在这一点上,可以通过将组合应用所期望的安全目标与服务提供者当前的安全性能进行匹配,并且通过将服务提供者所期望的安全目标与组合应用当前的安全性能进行匹配,来进行服务提供者的服务(例如,网络服务)的选择。从而,相互依赖的业务流程和安全策略可以以抽象才莫式来设计,并可以很容易地被实现。由于业务流程规范的设计常常由业务分析师或软件架构师来执行,所以软件注解从可定制的模式来建模,可定制的模式不要求可能不熟悉相关联业务流程的安全开发者有高水平的安全知识和训练。使用安全注解,组合应用不需要在安全目标和配置之间的缝隙(gap)手动搭桥,从而降低了安全缺口存在的可能性。而且,通过强耦合(close-coupling)业务流程模型和相关联的安全注解,对业务流程的改变将与安全目标更加稳固地绑定。从而,使用在业务流程规范级定义的目标,抽象的业务驱动的安全目标被有效地映射到具体的安全策略和安全实施方案中。简而言之,这里所描述的安全框架使得业务流程开发者能够将高级别的安全意图或目标添加到业务流程规范中,其中安全框架方便了安全配置和强制流程的自动产生。这些安全目标可以包括,例如,业务流程授权要求、网络服务的保护质量(QoP)要求或者其他的安全意图。诸如通过将基本的安全策略、目标或基础结构的细节进行抽象,提供模型驱动的安全组合框架给组合应用开发者,其使安全目标能够直截了当地整合到基于脚本的轻量型组合应用中。组合所使用的服务可以是包装为网络月良务的公司内部业务功能、由供应商和其他业务合作伙伴提供的外部网络服务或者纯粹的本地服务,由此为安全的跨组织组合应用提供解决方案。图1图示了示例性业务流程100,其包括以协调的顺序执行的一系列任务或活动。任务是原子业务流程组件,描述活动或改变流程的控制流程,例如划分业务流程或加入业务流程。例如,示例性业务流程100包括专用的开始任务101,以及顺序执行的第一任务102("任务l,,)、第二任务104("任务2")、和第三任务105("任务3"),其中每个任务均在专门的结束任务106之前进行。某几个任务的执行,诸如第一任务102或第三任务105,可以要求调用提供业务合作伙伴或供应商的业务功能性的外部网络服务。其他任务的执行,诸如第二任务104,可以要求被分配特定角色的人员介入。图2是图示使用安全注解来实现组合应用的示例性系统架构200的框图。具体地说,系统架构200包括调用组合应用("comp-app,,)的企业201、第一服务提供者203("sp,,)、第二服务提供者204和第三服务提供者205。企业201和服务提供者203到205通过网络206连接。企业包4舌实现使用安全注解的组合应用的设备208、和企业策略库(EPR)209、企业安全性能目录(ESCC)210、策略配置服务器(PCS)211、服务中介(broker)(SB)212、和服务注册(SR)214。通常,企业策略库209存储企业201的安全策略、目标或目的("comp-app-sg,,),以供业务流程开发者检索;企业安全性能目录210存储企业201的安全性能("comp-app-cap,,),以供业务流程开发者检索;策略配置服务器211存储新创建的安全策略和正在开发的组合业务流程的性能;服务中介212确认匹配的服务提供者;以及服务注册214存储关于已经注册的服务提供者的信息,用于协助确认匹配的服务提供者的流程。企业的安全策略comp-app-sg可以涉及访问控制^见范和强制、QoP声明和强制、以及分布式策略管理问题,该分布式策略管理问题可能在包括业务流程级、业务流程任务级、和服务级的不同级上需要。例如,这些策略可能涉及用于个别业务流程任务授权的规范和强制、用于业务流程的授权约束(例如,职责的分离)的规范和强制、或用于网络服务(例如,本地服务、组合服务、后端服务、外部服务)的QoP要求(即,安全性能和策略)的规范和强制。QoP要求可以定义安全要求或隐私要求,诸如特定的加密算法或者技术安全性能,技术安全性能诸如网络服务安全策略(WS-SecurityPolicy)中的绑定或者对像安全声明标记语言(SAML)这样的特定令牌的支持。而且,当与后端服务交互时,安全策略可以指示使用自动化的策略配置机制。如果后端系统策略数据库没有包括为组合应用做出的对后端应用服务的服务请求进行授权的策略,那么业务流程开发者应当确保产生所要求的策略并将其存储在后端系统策略数据库中。在与外部服务交互时,策略还可以指示使用动态的策略协商和策略强制。组合应用执行的某个阶段可以访问属于供应商或贸易合作伙伴的外部网络服务。在这些情况下,如果达到或者满足或符合组合应用与所请求的外部服务的安全目标,每一个所要求的服务交互就可以发生。而且,安全策略可以指示动态策略管理将被用于在运行阶段期间通过策略变化来寻址,例如在不重启应用的情况下适应该组合正在使用的服务策略中的变化。也可以在安全策略中描述用于支持在分布环境中相互操作性的标准适应性安全月良务(standardscompliantsecurityservice)(例如,安全令牌月良务)和策略(例如,可扩充的访问控制标记语言(XACML)兼容策略)。在这样做时,安区策略考虑安全API,用于提供低级别网络服务安全标准的抽象;安全机制的统一使用,用于为所有安全意识应用提供企业级保护;业务流程和安全策略的统一设计;和信任管理基础结构,用于支持跨组织的服务交互。在一个示例中,安全策略comp-app-sg可以要求所有的企业到企业(B2B)连接必须是机密的。一个示例安全性能comp-app-cap可以指示企业支持使用安全确认标记语言(SAML)令牌的、基亍令牌的访问控制。设备208还包括业务流程引擎(BPE)215,用于创建业务流程规范的实例和执行业务流程的相关联任务,如在业务序列中所指定的那些任务;事件管理器(EM)216,用于实例化和协调合适的服务代理;服务代理注册(SPI)217,用于存储由事件管理器216检索的服务代理;业务流程编辑器219;组合业务流程规范语言(BPEL)220;策略域专用语言(DSL)引擎(PDSLE)221,用于解析安全注解;安全服务代理(SSP)222,其提供用于管理到服务提供者的安全服务的调用以及处理安全操作(例如,加密、令牌验证、令牌检索)的操作;SSP注册(SSPR)224,用于存储SSP代码;策略模式库(PPR)225,用于存储安全策略模式。总的来说,业务流程引擎215、事件管理器216和服务代理注册217称为设计时组件,而业务流程编辑器219和组合业务流程规范语言220称为运行时组件。为了实现其与安全相关联的功能,安全服务代理222可以包括或者可以访问发布证书的属性服务器、提供加密功能的加密服务器、评估访问控制请求的策略决策引擎、验证证书的证书引擎、和/或存储公共密钥和私人密钥的安全密钥引擎。第一服务提供者203包括网络服务226和安全性能注册227,用于为第一服务提供者203存储安全目标或策略("sp-pol")和安全性能("sp-cap,,)。服务226提供业务功能,并且被实施为网络服务,该网络服务具有的描述至少包括服务(或操作)名称、和输入输出参数。安全策略sp-pol可以指示访问策略,该访问策略描述要求哪个凭证来访问该服务,而安全性能sp-cap可以指示服务226所支持的安全性能。组合应用环境包括组合应用层和服务提供者层。组合应用层和服务提供者层二者都能够扮演服务消费者和服务提供者的角色,这取决于在运行时段交互期间服务调用的方向。尽管没有描述,但是第二服务提供者204和第三服务提供者205也与服务和安全性能注册相关联。根据一个实施例,使用设计时段流程和运行时段流程来产生组合应用。在设计时段流程中,开发者使用流程编辑器219指定业务流程并部署该流程。在运行时段流程中,业务流程引擎215创建流程规范的实例并执行如在流程序列中所指定的那些任务。对于调用外部网络^^务调用的每一个任务,业务流程引擎215都调用事件管理器216,并将服务请求传送到事件管理器216。基于该请求,事件管理器从服务代理注册中选择合适的服务代理,并且实例化该服务代理。每个经实例化的服务代理都调用被绑定的外部网络服务,并返回调用的结果给事件管理器,事件管理器反过来又将响应转发给业务流程引擎。业务流程引擎从所有的外部服务调用中收集响应并在所返回的数据上执行组合操作以创建组合输出,从而部署组合业务流程。图3图示了在组合应用层实现自动安全应用组合的示例性过程300。简要地说,计算机实现的过程300包括访问用于业务流程的规范,该规范包括定义安全意图的安全注解,和定义至少一部分业务流程以及调用外部服务的任务。过程300也包括调用与安全注解相关联的安全模式,确认与满足关于所调用的安全模式的安全意图的外部服务相关联的服务提供者,以及使用所确认的服务提供者调用业务流程。更详细地说,当流程300开始(S301)时,访问用于业务流程的身见范,该规范包括定义安全意图的安全注解,和定义至少一部分业务流程以及调用外部服务的任务(S302)。简要地参照前面的,图4是描述由业务流程开发者在设计时段准备业务流程规范的泳道图。由于在设计时的组合应用的类型会影响需要强制的安全策略,所以业务流程开发者使用策略管理工具401,从企业策略库402检索企业的安全策略comp-app-sg。业务流程开发者也可以定义至少与企业的安全策略同样严格的特定应用的安全策略。而且,业务流程开发者从企业安全性能目录405检索安全性能comp-app-cap。对于每个被4企索的安全策略,业务流程开发者从策略模式库404中选择合适的安全策略模式,并且为要实现的组合业务流程定制所选择的策略模式。所定制的策略模式作为策略注解被插入到业务流程规范407中,在那里可以^使用策略域专用语言表达注解。业务流程开发者也用从企业安全性能目录405检索到的安全性能来更新策略配置服务器406。每个组合应用与策略配置服务器相关联,该策略配置服务器提供用于存储和查找与特定的组合业务流程相关联的安全策略的服务和性能。图4中的泳道图所示的流程在组合应用层被执行。相反地,在服务提供者层产生网络服务描述和相关联的安全策略和安全性能,并且服务及其相关联的元数据(例如安全策略和安全)在服务注册中被注册。如下面将会更详细的描述的,服务可以是后端企业服务、外部企业到企业服务或本地服务。安全注解可以包括表示安全意图的变量,其中使用该变量来调用安全模式。安全意图可以声明在使用外部网络服务时的外部强制策略,可以声明在^Hf被调用的业务流程作为网络服务时的策略,可以声明在任务需要人的交互时的基于任务的授权要求,或者可以声明基于任务的授权约束,.该授权约束指定了任务执行的顺序。安全注解可以指定被允许执行任务的角色。'而且,安全意图可以指定任务执行的顺序。调用业务流程还可以包括执行任务。安全模式可以包括第一入口点,用于在服务提供者被确认之前触发安全意图的强制;第二入口点,用于在任务被执行之前触发安全意图的强制;和第三入口点,用于在任务被执行之后触发安全意图的强制。安全意图可以声明消息的机密性、加密安全意图、完整性意图、角色分配意图,或任务执行顺序意图。与安全注解相关联的安全模式被调用(S304)。如在图5中的泳道图500所示,在运行时段,业务流程引擎501创建包括安全注解的业务流程规范的实例。为了执行或调用安全注解,业务流程引擎501调用策略域专用语言引擎502解析安全注解。一旦被策略域专用语言引擎502所解析,就通过当前组合流程所创建的安全策略comp-app-sg更新策略配置服务器505。除了这些所创建的安全策略comp-app-sg,策略配置服务器也存储组合流程的安全性能comp-app-cap。如上面所述,在设计时段性能comp-app-cap已经被上载到策略配置服务器505中。基于所调用的安全模式来确认与满足安全意图的外部服务相关联的服务提供者(S305)。如图5所示,策略域专用语言引擎502触发、调用、执行或其他方式调用服务中介507,以供确认匹配服务提供者511,其中潜在的服务提供者的列表在服务注册510中被注册。服务中介507从服务注册510中为所有的潜在服务提供者511检索服务访问信息。该服务访问信息包括地址或网络服务终点,诸如统一资源定位器(URL)和网络服务操作签名。这些网络服务操作签名可以包括操作的名称和输入或输出参数。为了执行匹配功能,服务中介507调用每个已注册的、潜在的服务提供者511以检索它们各自的安全策略sp-pol和安全性能sp-cap。服务中介507也从策略配置服务器505中才佥索组合应用的安全策略comp-app-sg和安全性育bcom—app-cap。当检索组合应用和服务提供者的安全策略和性能时,服务中介507执行至少两个测试。例如,服务中介可以判定服务提供者511是否提供符合或者满足组合应用的安全策略comp-app-sg的安全性能sp-cap。而且,服务中介507判定组合应用是否提供匹配或者满足服务提供者511的安全策略sp-pol的安全'l"生能comp曙app曙cap。如果两个测试都满足,那么由于服务提供者511和组合应用两者都互相地具有安全通信的资格,因而服务提供者511可以被用于安全组合应用。在对于每个已注册的、潜在的服务提供者511执行这些测试之后,服务中介507将一组经确认的、合格的服务提供者511存储在知识库中并且产生一个事件,该事件指示提供者选择已经完成,并且服务提供者已经被合适地筛选。使用经确认的服务提供者来调用业务流程(S306),而后结束流程300(S307)。在解析安全注解和确认服务提供者之后,业务流程引擎501执行或者调用包括在业务流程中的任务,其中至少一个任务使用安全服务代理来调用外部网络服务。调用内部和外部的服务由事件管理器504管理,事件管理器504由业务流程引擎501触发。对于每个外部网络服务调用,事件管理器504从服务中介507检索所有经确认的、合格的服务提供者的列表,并且访问可能对在組合应用与每个经确认的服务提供者511之间建立安全通信有用的任何信息。该信息可以包括网络服务访问信息,诸如终点信息,组合应用的安全策略comp-app-sg和性能comp-app-cap、月良务才是供者的安全策略sp-pol和性能sp-cap、经确i人的合格服务提供者的列表和对于存储在模式实施方案目录中的合适的安全实施方案的参考。随后,事件管理器504为要被调用的每个服务提供者511产生一个安全服务代理506的实施方案。为了保护安全服务代理506的实施方案不被内部攻击(例如代码修改),事件管理器504将安全服务代理506的代码和在安全服务代理注册509中的安全服务代理506的代码加密。安全服务代理506是这样一类服务代理,其提供用于管理到服务提供者511的安全服务调用的操作和用于处理安全操作的操作,诸如加密、令牌-睑证或令牌检索。对于每个安全服务访问,事件管理器504从安全服务代理注册509中检索被加密的安全服务代理506,并且在将代码解密之后将安全服务代理506进行实例化。事件管理器504调用由安全服务代理506提供的服务操作,安全服务代理506应用安全操作(例如,通过将安全令牌附到请求中或者将请求加密),并且调用外部网络服务操作。经确认的服务提供者511的每个网络服务均接收调用,执行相关联的安全操作(例如,通过验证令牌或执行解密),并且处理呼入的消息请求。服务提供者511随后产生对安全服务代理506的响应,将合适的安全操作施加到该响应,(例如通过给该响应签名),并将该安全响应发送到安全服务代理506。安全服务代理506接收经安全保护的结果,将相关联的安全操作施加到响应(例如通过验证签名),并返回处理后的响应给事件管理器504。反过来,事件管理器504将结果转发给业务流程引擎501,该业务流程引擎501提供处理后的响应给业务流程。下面是在运输业务的情境下,使用经确认的服务提供者的业务流程的调用的例子。在这个直截了当的例子中,表示为iCarrier的组合应用,使用业务逻辑选择合格的承运者用于将汽车从汽车制造商运送到新车经销商。下面表l中所示的是通过使用域专用语言为lCARRIER应用定义的示例性流程规范。表1._iCarrisrProcesstask:get_carrier_listdo{…}/*请求服务提供者筛选*/task:rate_requestdo{...}/*请求外部服务调用*/task:select—carrierdo{…}task:book_carrierdo{...}/*请求外部月艮务调用*/EndProcess在示例性业务流程规范中,任务get_carrier—list()的执行返回关于安全策略和性能的合格承运者的列表。由业务流程定义的组合应用包括至少两个到承运者的交互getrate(shipment—data),它从不同的承逸者中检索费用;和bookcarrier(shipmentid),它为运输预定承运者。承运者将它们的功能性提供为网络服务,并且选择要采用的合适承运者也取决于iCarrier和潜在的承逸者是否互相满足安全策略和安全性能。三个潜在的承运者的安全策略和安全性能在下面的表2中示出。表2.<table>tableseeoriginaldocumentpage17</column></row><table>在这个例子中,诸如通过4吏用lookup—mypolic正s()或LOOKUP—MYCAPABILITIES()服务操作,lCARR正R网络服务提供用以检索这些策略和性能的操作。假定汽车制造商的安全策略指示用于现有应用的所有B2B连接都应当确保机密性。为了符合这样的策略,icarrier应当只选择提供确保机密性的安全性能的承运者。然而,与此同时,lCARRIER应当具有满足承运者(即服务提供者)的安全策略的安全性能。在准备业务流程规范中,iCarrier业务流程开发者检索下面的'B2Bconfidentiality,安全模式,该安全模式指示所有的B2B连接确保机密性Pattern:enforce"B2Bconfidentiality,,duringProcess(process—name〉像其他的安全模式一样,这个模式被用作为每个特定的流程进行实例化的模板。定制该模式,业务流程开发者将下面的注解插入到如图1所示的lCARRIER业务流程规范中,使用策略域专用语言enforce"b2bconfidentiality,,duringprocessicarrier如下面的表3所示,经注解的流程规范包括流程域专用语言和策略域专用语言的组合,<table>tableseeoriginaldocumentpage18</column></row><table>使用这个业务流程规范,经安全保护的iCarrier将只选择A-Trans作为合格的承运者。具体地说,由于A-Trans提供RSA加密和解密性能(用于实现安全通道通信),并且由于RSA加密和解密性能也被iCarrier自身所支持(如在iCarrier安全性能列表中所反映的那样),因此A-Trans满足iCarrier的"消息机密性"安全策略。而且,由于iCarr正r提供RSA加密和解密性能(用于实现安全通道通信),并且由于RSA加密和解密性能也被A-Trans所支持(如在A-Trans安全性能列表中反映的),因此iCarr正r滿足A-Trans的"消息机密性"安全策略。而且,由于iCarrier提供X509证书安全性能(获取访问控制决策所需要的,该控制决策基于诸如成员角色之类的证书编码属性),并且由于同样的X509"i正书安全性能或处理功能也纟皮A-Tmns所支持(如在A-Trans的安全性能列表中所反映的那样),因此iCarrier也满足A-Trans的"服务机密性基于证书的访问控制"安全策略。基于这样的匹配,lCARRIER将自动地创建安全代理以确保在运行时段实现所需的安全功能性。例如,服务调用getRate和BOOKCARR正R被安全地实现。承运者B-Trans和C-Trans不符合iCarrier的安全策略,从而未被确认为合格的承运者。如果汽车制造商更改了它自己的B2B连接安全策略,那么业务流程开发者可以很容易地改变在iCarrier业务流程规范中的安全注解,并且重新部署组合应用以反映新的安全策略。例如,如果新的安全策略指示B2B连接不需要确保机密连接,则业务流程开发者可以使用流程编辑器用"noB2Bsecurity"替换旧的注解"B2Bconfidentiality",并且去除安全性能要求。这个更改的业务流程规范如下面的表4所示。表4_<table>tableseeoriginaldocumentpage19</column></row><table>更新后的安全策略和性能列表也应当调整,如表5中所示。表5<table>tableseeoriginaldocumentpage19</column></row><table>iOrr正r安全策略noB2Bsecurity安全性能〈无〉A-Trans安全策略消息才几密性(message-confidentiality)安全策略月良务机密性基于证书的访问控制(service-confidentiality::certificate-based-access-control)安全性能(RSA)加密和解密安全性能X509证书B-Trans安全策略消息机密性安全性能RSA加密解密安全性能SHA1Digest安全性能基于64编码(Base64Encoding)安全性能简单公共密钥体系(SPKI)证书C-Trans安全策略noB2Bsecurity安全性能〈无〉根据这个更改后的安全方案,应当确认为合格承运者的唯一承运者应当是C-Trans。在这一点上,通过使用域专用安全注解来自动控制该流程以产生受保护的安全代理,该安全代理执行所期望的安全搡作,以便符合在注解中所表达的高级别的安全意图。其次,描述了安全服务代理的具体示例性实施例。安全服务代理的一个主要任务是处理与安全相关联的任务,执行该任务以满足与包括在业务流程规范中的安全注解相关联的安全策略。为此,下面进一步详细描述通过产生的安全服务代理执行的用以实现"B2B机密性"安全策略的流程。在这个例子中,与iCarr正r和A-Trans相关联的安全策略和性能是那些"未更改的"状态,如在表2中所反映的。从而,安全服务代理被用作执行任务,以便满足特定的安全策略。关于从iCarrier到A-Trans的通信,安全服务代理从属性服务器接收用于iCarrier的证书,诸如GoldDHLPartner证书,其中该证书对iCarr正r属性进行编码,该属性用于证明iCarr正r的合格。安全服务代理还从iCarrier的公共密钥库中为A-Trans检索公共密钥,并且读取A-Trans网络服务句柄。用于iCarrier的私人密钥从iCarrier的私人密钥库加载,并且对A-Trans的运输请求被加密。通过调用由A-Trans网络服务提供的网络服务操作,发送加密后的运输i青求和iCarrier"i正书。从A-Trans的角度看,A-Trans网络服务-险证所提交的证书,并且基于在证书中编码的iCarrier属性来做出访问控制决策。当授予了访问权限,A-Trans解密和处理所提交的请求,并且使用从证书中提取的公共密钥来加密结果。被加密的结果被发送到安全服务代理,安全服务代理使用iCarrier的私人密钥依次解密该结果。从而,通过在发送给iCarrier之前加密结果,A-Trans满足了iCarrier的消息机密性策略。这个结果由lCARR正R的安全服务代理强制,该安全服务代理检查以确认该结果是否实际上^皮加密。因为运输请求和对应的结果被加密,所以满足了消息机密性。而且,由于通过调用由A-Trans网络服务提供的网络服务操作来发送iCarrier的证书,所以满足了服务机密性基于访问控制的证书的策略o图6是说明可能由组合应用开发框架600调用的服务目录的框图。如上面所描述的,例如,由第一个公司602的组合应用601调用的任务可以调用第二个公司605的外部服务604。而且,组合应用可以从后端企业应用(例如,企业资源规划应用)中调用后端服务606,或者甚至是本地服务607,本地服务607作为本地组件被构建到组合应用内。使用本地服务607是因为在很多情况下业务流程开发者可以实现一些没有被一个或多个现有服务完全捕捉的业务逻辑。本地服务可以由组合应用开发者创建,或者从其它组件提供者所输入。这些本地服务607可以被公开为网络服务以供其他组合应用访问。增强框架600通过定义某个开发任务来辅助组合应用的开发,以有效地指定组合应用的安全性。框架600还定义设计时段的协议,该协议关于不同参与者与开发流程所涉及的其他方交换哪些信息和安全性人为影响。定义在开发任务之间的相关性有助于组织设计流程。图7和8描述了开发使用增强框架600的组合应用的各个阶段。在图7中,例如,用于给安全性建模的整个流程包括定义阶段701,在其中确认安全目标;实现阶段702,在其中提供用以完成所确认的安全目标的机制;和声明阶段704,在其中使用附加的注解选择用于安全应用的安全目标或服务。在定义阶段701,安全小组执行安全风险分析705以分析在业务情境和相关联的业务流程中的威胁和确认相关联的风险。这样的系统性分析可以通过在面向服务的业务应用中确认服务交互机制以及通过执行对个别服务交互机制的威胁分析来完成。为了减轻风险,产品安全小组准备安全模式定义706,用以提出可以在安全模式中投入的安全解决方案。通过安全模式的定义,解决方案被做成在不同的组合应用之间可重复利用的。在这样做时,可以准备跨越其他需要被保护的应用的安全^/L制的统一用法。还是在定义阶段701,产品安全小组准备安全意图定义707,用以定义可以用安全模式的组合实现的一组高级別的安全意图。安全意图定义707提供意图本体,该意图本体目的在于使能在应用的开发生命周期内跨越其他小组的安全目标的统一定义。在实现阶段702,安全开发者提供安全模式实施方案709,将与域无关的模式绑定到特定的上下文。当重新使用与域无关的模式时,安全开发小组遵循公司特定的规则以改编不同的实施方案。在提供安全模式供应710时,所实施的模式通过模式库而得到。在声明阶段704,组合应用开发者准备应用级的意图声明711,以声明组合应用应当遵循的安全意图。应用级的意图声明711;故用于捕"^足组合应用的安全意图,并且为了与组合应用安全的组成部分(例如,本地组件、流程任务、外部网络服务)进行交互而定义由组合应用施加的意图。通过执行服务级的安全声明712,组合开发小组可以将組合应用或本地組件公开作为一个服务。从而,可以在公开之前通过将安全意图添加到组合应用和本地组件来定义QoP要求。在图8中,用于确保组合应用的安全执行的整个流程包括启动阶段801,和强制阶段802。在启动阶段801中使用的协议确保对强制阶段802中使用的协议的基础。在启动阶段801,安全配置804在运4亍组合应用之前出现。例如,所分配的应用级的安全意图被加载并被内部配置,以供运行时段的强制。当与后端服务交互时,建立对应的安全配置,以使得在后端上的服务执行之前充分的授权允许已经到位。从而,策略更新协议被用来产生授权策略并将丢失的策略插入后端策略数据库。当与外部服务交互时,可以通过交换认证和授权属性来建立信任。当组合应用使用外部服务,诸如与不同安全域相关联的服务时,外部策略协商805出现。组合应用(例如,作为服务消费者)和外部服务(例如,作为服务提供者)可以定义它们各自的安全策略和安全性能,诸如关于令牌类型、加密算法和所使用的机制。在进行交互之前,组合应用和外部服务两者达成指定公共策略的协议。这个达成的协议通过策略协商流程来实现,该策略协商流程支持来自于各种源的策略的融合。在强制阶段802,外部策略强制806为双方间的每个交互寻址强制公共策略。外部策略强制806可以要求应当修改所交换的消息,例如通过将安全令牌添加到消息中。对于本地安全强制807,增强框架提供访问控制机制以调节对本地服务和对象的访问。在这样做时,提供同一族的域专用语言,该同一族的域专用语言支持应用安全策略的有效规范并且也支持用于强制和管理这些策略的运行时段组件。如上面所指出的,通过附加意图到业务流程规范来指定安全策略。业务脚本语言被设计用于有效地定义组合应用的功能性部分,用于定义包括若干任务的流程,这些任务反过来可以又包括活动。这些任务可以使用本地服务,将本地数据存储在变量中,以及调用外部网络服务或后端系统。参考上面简要地说,图16图示了实现自动安全应用组合的另一个流程1600。简要地说,当流程1600开始(S1601)时,将安全框架应用到业务流程中,安全框架包括定义阶段,确认组合应用的安全目标;实现阶段,实现用于完成所确认的安全目标的安全模式;和声明阶段,使用基于安全模式的组合应用内的安全注解来实现所确认的安全目标(S1602)。基于应用安全框架引导外部策略协商指定组合应用与外部服务之间的公共策略(S1604)。对组合应用与外部服务之间的每个交互强制公共策略(S1605)。基于安全目标来调整外部服务对本地服务和对象的访问(S1606),从而结束流程1600(S1607)。下面的表6提供了业务流程规范的另一例子,其说明了用于从一组潜在的承运者中选择和预订合格承运者(诸如汽车承运者)的流水线流程。为了容易参照,业务流程规范的每一行都进行了编号。表601processShipment0203#SecurityAnnotations0405enforceB2BConfidentialityandB2BIntegrity06exposeB2BConfidentiality07assignroles[manager]toselect—carrier08constraintselect—carrierbeforebook—carrier0910弁ProcessSpecification1112variables13carriersasList14ratesasMap15selected—carrierasService16...1718sequence19get—carriers=>get_rate=>20select—carrier=>book—carrier.2122taskget—carriersdo23carriers=registry.get_services("carrier,,)24end2526taskget—ratedo27carriers.collect{|carrier|28rate《{carrier=>carrier.get__rate()}2930end3132humantaskselect—carrierdo33task—form.selection=rates34…35selected_carrier=task—form.result36end3738taskbook—carrierdo39selected—carrier.book—shipment()40end41end_基于由承运者对于给定的运输请求发送的费用进行选择流程,并包括按顺序消减(pare)执行的四个任务(11.18到20)。get—carrier任务在基于运输请求细节检查了承运者的资格后从承运者注册中选择一组承运者。get一rate任务为每个承运者产生对报价的请求(RFQ),这促使每个承运者评估RFQ并提供出价来响应。human一task任务实现由用户来执行手动选择承运者的功能。另外,book—carrier任务执行预订所选择的承运者。在业务流程规范中以安全注解的形式表达安全目标。例如,图9图示了用于在业务流程中指定安全性的模型900。定义阶段定义命名为安全意图(诸如安全意图902)的意图本体901,而实现阶段实现模式(诸如模式905)的模式库904。由于模式905实现了安全意图902,所以安全意图902与模式905相关联。通过在业务流程规范中包括安全注解来实现安全意图。例如,流程906可以通过使用附加到业务流程规范的安全注解907来声明将被强制的一个合成的安全意图组。三个安全注解的例子包括服务交互安全注解909(诸如强制安全注解910或公开安全注解911)、分配安全注解912或约束安全注解914。当使用网络服务时,服务交互注解909被用于声明外部强制安全策略,例如当消息^皮发送出时它们应当净皮加密。强制注解910(enforce<serviceusageintentionexpression"声明声明用于与组合应用所使用的网络服务进行交互的策略。例如在表6的第5行,B2BConfidentialityandB2BIntegrity被强制,促使简单对象访问协议(SOAP)消息被力。密和签名。因此,当运行任务915(其可能是调用网络服务的GET—RATE或BOOK—CARRIER任务)时,SOAP消息将在传车命之前纟皮加密和签名。公开安全注解911(expose<serviceusageintentionexpression>)声明声明当公开组合应用或本地组件为网络服务时所使用的安全策略。例如,在表6的第6行,组合应用被公开为网络服务,该网络服务要求与任意一个调用所公开的服务的服务消费者进行加密通信。分酉己安全注解912(assign<roleassignmentintentionexpression>)声明指定哪些角色被允许运行给定的任务。例如,在表6的第7行,业务流程开发者声明由拥有"管理者"角色的用户执行任务SELECT—CARRIER的意图。约束安全注解914(constraint<executionorderintentionexpression>)指定任务执行或运行的次序或顺序。例如,在表6的第8行,在完成任务SELECT_CARRIER之后,即,在管理者已选择承运者之后,执行任务BOOK_CARRIER。可以增加或替换另外的约束类型,诸如责任的分离、责任的绑定、角色情境或其他的。由于安全意图(或安全目标)与所定义的模式相关联并且由所定义的模式执行,因此这里所描述的增强框架遵循面向模式的方法以实现安全策略。通过这种方法,可以通过与描述安全意图的安全注解相关联的模式来实现安全意图。当执行组合应用时,容器为具体的安全意图寻找对应的模式,并遵循模式实施方案以保护应用。下面的表7示出了安全模式的摘录。_PatternB2BConfidentiality{beforeServiceSelection{...}beforeServiceCall{...}afterServiceCall{...}i__通常,安全模式被用于为意图的强制提供技术细节,例如,某个安全性考虑必须被怎样强制。这些模式可以被提供为由容器提供者或者由一些其他方所写的、作为模式库或库的一部分的通用安全组件,其可以用应用架构来交付。如果应用专用安全意图还没有定义的话,那么可以扩展或选取预制的模式实施方案。通过为安全模式使用域专用语言,模式实施方案变得模块化并且有效了。模式内的强制代码也可以用脚本语言写。在表7所示的摘录的模式中,模式可以被看作是具有若千入口点的模块,通过这些入口点可以调用模式以强制安全保护。可以使用不同类型的入口点触发通过冲莫式实现的强制的具体部分。例如,BEFORESERVICESELECTION是这样一个入口点在该入口点处,在服务注册被请求之前指定代码被运行。图10是说明为组合应用的开发提供设计和执行环境的安全监视器1001的框图。使用安全监视器1001来实施安全策略强制,安全监视器1001被集成到组合应用容器1000中。该容器提供集成设计时段1003以便用业务脚本语言来开发组合应用。业务流程规范(或"脚本"或"描述")被保存,并被脚本解析器1002解析以将业务流程规范置于能够被执行引擎1004运行的格式。在运行期间,基本的业务流程使用容器服务1005,容器服务1005可以包括服务注册1006、和消息接发服务1007或其他服务1009。当执行人工任务时,控制被传递给任务列表用户接口(UI)1010,通过该用户接口可以完成手动任务。脚本解析器1002被扩展为支持业务流程规范中的安全注解的声明。容器1000的组件允许安全监视器1001观察业务流程的运行,并且在合适的时候进行干预或以其他方式交互。安全监视器1001可以检查和改变其他容器组件的状态和/或行为,其他容器组件诸如脚本解析器1002或消息接发服务1007。通过访问由组件产生的事件来观察行为。通过事件的上下文来监视状态。从而,为了决定什么类型的安全保护将被强制,安全监视器1001可以访问业务流程规范和安全注解。类似的,为了决定以安全注解表达的意图将被怎样强制,安全监视器1001访问模式库。安全监视器1001通过已经在执行引擎1004中引入的钩子(hook)来观察业务流程的运行。为此,由于业务流程的运行中的所有的安全相关联的事件都被安全监视器1001所侦听(intercept),因而安全监视器1001遵循总的干预原则。在事件实际发生之前,监视器调用所选择的模式,该模式具有检查和更新所侦听的事件的实际状态或更改所侦听的事件的影响的机会,以便强制安全保护。为了有效地完成这个,使执行引擎1004意识到产生事件的活动。而且,安全监视器1001应该能够访问用于具体业务流程的安全意图组。所运行的业务流程的每一个任务均产生一个或多个某种类型的与安全相关的事件。在运行一项任务的同时,执行引擎1004产生运行时段事件,该事件的类型与该任务当前出现的事件相对应。在产生的事件变成有效之前,它被延迟并交付给安全监视器1001,安全监视器1001随后可以执行运行时段协议(见图8),并且还可以在对应于该事件类型的入口点上调用所选择的模式。事件类型可以包括流程模型改变事件、服务选择事件、服务前调用事件、服务后调用事件、人工任务(humantask)执行事件或者其它事件。当业务流程规范或者其安全意图被更改和保存时,在集成设计时段产生流程模型改变事件。在没有集成设计时段的系统中,在部署时段可以产生类似事件。容器IOOO执行安全配置协议。在这种事件的情况下,没有关联模式入口点类型被调用。当一项任务使用服务注册1006来选择某个种类的服务时,产生服务选择事件。该事件促使基于所选择的安全策略来筛选服务提供者。例如,容器1000触发beforeServiceSelection入口点来为组合应用产生合成策略,该策略随后被用于服务选择。容器IOOO也为所选择的种类检索可用的服务提供者的列表,并为列表中的每个服务提供者使用策略协商协议。如果对某个服务提供者没有找到达成一致的策略,就从可用的服务提供者列表中去除该服务提供者。经过筛选的、确认的、合格的服务提供者的列表^l返回给业务流程。当出现对服务提供者的调用时,产生事件,并且建立包括待发送的消息的上下文。容器触发模式中的beforeServiceCall入口点,该入口点可以在消息被容器IOOO发送出去之前更改消息的内容。类似的,当服务提供者返回消息时,产生事件并建立包括所接收到的消息的上下文。在被包括在消息中的数据进一步用在业务流程中之前,容器触发模式中的afterServiceCall入口点,以便转换消息。在人工任务执行之前,产生人工任务执行事件。安全监视器1001判定用户是否有足够的权限来运行该任务。因为当事件被触发时出现强制,所以该强制可能受限于被安全监视器所捕捉到的事件的类型。从而,安全监视器1001可以很容易地被定制或者扩展为寻址新类型的事件。图ll是说明安全服务之间的示例性关系的框图。在组合应用环境中,每个服务都可以充当消费者服务和提供者服务。为了能够寻址不同的安全要求,每个服务使用一组安全服务1101,该组中的每个安全服务都提供明确定义的安全功能。在图11中,后端策略发生程序1102用于产生由后端策略强制所使用的授权策略。后端策略更新器1104用于检查具体的策略是否存在于后端策略数据库中,如果合适的话,则用于插入策略。策略发生程序1105用于从服务交互安全注解产生WS-SecurityPolicy策略1106。策略匹配程序1107匹配在两个WS-Security策略之间的兼容声明,产生达成一致的策略1109,而策略注册1110用于为外部服务交互存储和^r索策略。令牌引擎1111用于嵌入令牌到SOAP消息中,并且还用于提供令牌签名验证功能。安全令牌服务1112用于产生SAML令牌1114。加密引擎1115提供用于加密和解密的功能,也提供签名和验证SOAP消息的功能,而策略决策点1116用于强制以XACML编码的访问控制策略1117。当流程模型改变事件出现时,基于业务流程规范的授权要求更新后端安全策略和本地策略。具体地说,从业务流程规范中提取授权安全意图,并将其传递到后端策略发生程序1102,后端策略发生程序1102产生对应的XACML策略1117。后端系统提供分立的"授权策略更新器"网络服务接口用于管理它的授权配置。后端策略发生程序1102将产生的XACML策略1117传递到后端策略更新器1104,后端策略更新器1104作为分立的授权策略更新器网络服务由后端系统提供。后端策略更新器1104将策略1117嵌入到XACML请求中,该请求随后^^送到后端策略决策点1116。根据所接收到的策略1117是否存在,策略决策点1116返回一个XACMLPERMIT(许可)响应或DENY(拒绝)响应。如果策略不存在,则由后端策略更新器1104将其插入到策略数据库。在一个示例性实施例中,使用JAVA⑧编程语言来实现后端策略更新器1104,而使用SUNXACML标记语言来实现策略决策点1116。除了策略是在本地策略数据库中更新的之外,本地策略更新流程与后端安全策略更新流程类似。这些本地策略可以用于在用户接口级强制授权。处理安全事件操作的安全监视器的一部分包括在容器的不同组件中。例如,设计时段识别和处理流程模型改变事件和触发后端安全配置1119。服务注册处理服务选择事件,并且触发策略协商1120。消息接发服务当发送SOAP消息时处理服务前调用事件,当接收结果时处理服务后调用事件。通过触发外部策略强制1121来处理服务调用事件。当访问本地服务和数据时以及当用户接口处理人工任务运行事件时,触发本地服务强制1122。图12说明了用于表6中所示的示例性业务流程的运行时段强制,其包括服务交互安全注解"enforceB2BConfidentialityandB2BIntegrity,,和分配安全注解"assignroles[manager]toselect—carrier".前一个安全注解指示B2B网纟备月良务交互应当通iti口密和数字签名交换的SOAP消息来进行安全保护。后一个注解表达了只有担当"管理者"角色的用户才被允许选择^i^:者。为了强制这些安全注解,在执行业务流程的每个任务的同时,执行引擎1201触发事件。所触发的事件被报告给安全监视器1202,安全监视器随后寻址合适的安全强制活动。从安全强制的角度来看,GET—CARRIERS任务1204的运行包括对承运者的选择,对此在运输流程和承运者服务之间有双方协议。这意味着运输业务流程的安全意图"B2Bconfidentiality"和"B2Bintegrity"应当满足每个所选择的承运者的安全性能。可以根据WS-Policy规范由策略匹配程序来执行策略协商1205。具体地说,产生WS-Policy策略,其反映了在安全注解中描述的高级别的安全意图。如果合适的话就在策略注册1206中更新承运者策略,以便应付在运行时改变所调用的服务的安全策略。所产生的策略随后与所选择的承运者(即,服务提供者)的其他WS-Policy策略进行交叉。策略交叉是WS-Policy中的协商流程的核心功能。交叉确认包括在运输业务流程和服务提供者安全策略两者中的兼容策略备选方案。交叉是可交换的、关联的功能,该功能将多种安全策略进行比较,并且根据WS-SecurityPolicy要求,返回仍然可能需要清除所有无效替代方案的策略。合格的安全策略,其^皮称为达成一致的策略,是从所有有效或合格的替代方案中选择的。策略匹配程序从服务注册中请求可用的服务并随后选择服务,对于该服务已经产生非空的达成一致的策略。关于WS-SecurityPolicy规范,非空策略包括机密性声明和完整性声明。而且,达成一致的策略包括SAML令牌声明,指定承运者服务的授权要求。在一个示例性实施例中,策略匹配程序可以使用JAVA⑧编程语言、使用ApacheWS-CommonsPolicy来实现。GET—RATE任务1207的执行使用网络服务调用,每个网络服务调用可以基于对应的达成一致的策略来调整。在发送出对外部网络服务1209的请求之前,安全监视器为包括在服务交互安全注解中的每个安全意图检索对应的模式。随后,通过调用beforeServiceCall入口点,安全监视器以安全注解指定的顺序运行该模式。模式代码通过加密和签名消息将实际的SOAP消息(其通过SOAP消息接发1210被通信发送)转换为安全消息以满足由安全注解所表示的安全目标。按照达成一致的安全策略,才莫式代码将SAML令牌也添加到请求中,如达成一致的策略所需要的那样。而且,安全监视器以WS-Security-encodedSOAP消息的格式向承运者服务提供者发送请求。一接收到服务请求,承运者服务提供者就在SOAP消息上执行加密操作,并且验证SAML令牌。承运者服务提供者的策略决策点随后基于令牌信息来评估服务请求。如果服务请求被评估为是肯定的,就计算费用,并且将该费用包含在SOAP消息中。该SOAP消息被加密和签名,并返回给运输请求者。在接收到所调用的服务提供者的响应后,安全监视器运行afterServiceCall入口点的模式强制代码。该调用使得签名被验证,并且内容被解密。从安全强制的角度来看,基于所指定的角色分配意图,SELECT一CARR正R任务1214的运行导致了批准被才丸行。SELECT—CARRIER任务1214的运行还包括用户接口中对承运者的选择活动,以及后端1212中对选择结果的持续活动。从而,这两个活动的运行调用两个阶段的访问控制协议。用户接口中的安全强制确保只能由担任"管理者"角色的用户来输出和完成承运者选择任务。存储选择结果可能需要在后端系统中的特别许可。假设如上面所讨论的这些许可已经被更新了,那么后端策略强制将SAML声明令牌添加到SOAP消息中,该SOAP消息随后净H送到后端系统1212。SAML令牌对用户角色"管理者"进行编码。当接收到包括SOAP消息和令牌的服务请求时,后端系统1212的令牌管理器验证该令牌并提取角色信息。最后,BOOK—CARRIER任务1215通过与为GET—RATE4壬务所4故的相同方式来执行策略强制以调用先前所选择的承运者服务。图13说明用于另一个示例性业务流程的运行时段强制,其包括服务交互安全注解"enforceconfidentialityandintegrity(强制机密性和完整性)",和分酉己安全S主解"assignroles[manager]toselect—carrier(分酉己roles[manager]给select—carrier),,。产品安全小组1301添加至少一个才几密性模式1302和至少一个完整性模式1304到模式库1305。其他模式也可以被添加到模式库1305,诸如来自供应商或容器提供者的模式库1306的模式。在设计时段期间,业务流程开发者1307将"enforceconfidentialityandintegrity(强制机密性和完整性),,月良务交互安全注解1309和"assignroles[manager]toselect—carrier(分酉己roles[manager]至'Jselect—carrier),,分酉己安全;主解1310添加到业务流程规范中。当执行业务流程规范时调用GETCARRIER任务1311,促使策略匹配程序1312检索组合应用策略1314和合作伙伴服务策略1315。基于合成的策略产生程序1316来检索组合应用策略1314,而基于调用网络服务提供者1317来检索合作伙伴服务策略1315。使用交互功能,策略匹配程序1312输出达成一致的策略1319,该达成一致的策略1319用于在GETRATE任务1320的执行期间使用SOAP消息接发1322通过承运者网络服务1317进行的消息接发强制1321,以及在SELECTCARRIER任务1324执行期间通过后端1326进行的授4又强制1325。图14说明了根据另一个一般实施例实现组合应用的示例性系统1400的外观。简要地说,系统1400包括调用组合应用的设备1401和提供网络服务的网络服务提供者1402。如下面进一步详细描述的,设备1401除其它此外还包括存储介质和处理器。存储介质存储用于业务流程的规范,该规范包括定义安全意图的安全注解,和定义至少一部分的业务流程的任务,以及调用外部服务的任务。处理器被配置为调用与安全注解相关联的安全模式,基于所调用的安全模式来确认与满足安全意图的外部服务相关联的服务提供者,以及使用所确认的服务提供者调用业务流程。可替换地,设备1401被配置为应用安全框架到业务流程,该安全框架包括定义阶段,确认组合应用的安全目标;实现阶段,实现用于完成所确认的安全目标的安全模式;以及声明阶段,使用基于安全模式的组合应用中的安全注解来实现所确认的安全目标。该企业还被配置成基于应用安全框架引导外部策略协商指定组合应用和外部服务之间的公共策略,对组合应用和外部服务之间的每个交互强制公共策略,以及基于安全目标调整外部服务对本地服务和对象的访问。更详细的说,设备1401的硬件环境包括显示监视器1408,用于向用户显示文本和图像;键盘1409,用于输入文本数据和用户指令到设备1401中;鼠标1410,用于定点、选择和调整显示在显示监视器1408上的对象;固定盘驱动器1411;可移动盘驱动器1412;;兹带驱动器1414;硬拷贝输出设备1415;计算机网络连接1416;和视频和音频;险测器1417。显示监视器1408显示图形、图像和文本,包含为设备1401所使用的软件应用的显示,也包括运行设备1401所必需的揭:作系统程序的显示。用户使用键盘1409来输入命令和数据以运行和控制计算机操作系统程序、网络浏览器和/或组合应用。用户使用鼠标1410来选择和调整显示在显示监视器1408上的图形和文本对象,这些图形和文本对象作为与设备1401的控制和在设备1401上运行的应用进行交互的一部分。鼠标1410是任意类型的定点设备,并且可以是操纵杆、轨迹球、触摸板或其他定点设备。视频和音频检测器1417允许设备1401捕捉数字图像和/或音频,并且可以是扫描仪、数字照相机、数字视频摄影机、麦克风或其他数字输入设备。用于为组合应用平台提供的软件存储在本地计算机可读存储介质中,诸如固定盘驱动器1411。在另一个实施例中,固定盘驱动器1411自身可以包括许多物理驱动单元,诸如独立冗余磁盘阵列("RAID"),或者可以是物理上位于分立计算单元中的盘驱动器集合或盘阵列。这样的计算机可读存储介质允许设备1401存取存储在移动存储介质和不可移动存储介质中的计算机可执行处理步骤、应用程序及其它类似的对象。无线的或有线的计算机网络连接1416可以是调制解调器连接、包括以太网的局域网("LAN")连接、或者诸如数字用户线("DSL")之类的广域网("WAN")连接、有线高速因特网连接、拨号连接、T-l线、T-3线、光纤连接或卫星连接。网络1406可以是一个或多个LAN网络、公司或政府的WAN网络、因特网或其他网络。计算机网络连接使用有线的或无线的连接器。无线连接器例子包括例如,红外线数据联盟⑧("IrDA")无线连接器、光学无线连接器、电气与电子工程师协会⑧("IEEE")标准802.11无线连接器、蓝牙@无线连接器、近场通信("NFC,,)连接器、正交频分复用("OFDM")超宽带("UWB")无线连接器、时间调制超宽带("TM-UWB")无线连接器或其他的无线连接器。有线连接器的例子包括例如,IEEE-1394火线@连接器、通用串行总线("USB")连接器、串行端口连接器、并行端口连接器或其他有线连接器。可移动盘驱动器1412是用于从设备1401卸载数据或上载数据到设备1401的可移动存储设备。可移动盘驱动器1412可以是软盘驱动器、IOMEGA㊣ZIP驱动器、压缩只读光盘存储("CD-ROM")驱动器、可记录光盘("CD-Recordable,CD-R")驱动器、可重复写入(CD-Rewritable)驱动器("CD-RW,,)、闪存存储器、USB闪存存储器、外部硬盘驱动器、闪盘(thumbdrive)、U盘(pendrive)、密钥驱动器、高密度数字多用途盘("HD-DVD")光盘驱动器、蓝光(Blu-Ray)光盘驱动器、全息数字数据存储("HDDS")光盘驱动器,或者各种可记录或可写的数字多用途盘("DVD")驱动器的任何一种,诸如可记录DVD(DVD-Recordable,"DVD-R"或者"DVD+R"),可重复写入DVD(DVD-Rewritable,"DVD-RW"或"DVD+RW"),或者DVD-RAM。操作系统程序、应用和各种数据文件存储在盘上,其存储在固定盘驱动器1411或用于可移动盘驱动器1412的可移动介质上。磁带驱动器1414是用于从设备1401卸载数据或向设备1401上载数据的磁带存储设备。磁带驱动器1414可以是四分之一英寸的卡式磁带(quarter-inchcartridge,"QIC")、4毫米数字音频磁带(digitalaudiotape,"DAT")、8毫米数字线形磁带(digitallineartape,"DLT")驱动器或其他类型的磁带。硬拷贝输出设备1415为操作系统和应用提供输出功能。硬拷贝输出设备1415可以是打印机或任何产生有形的输出对象的输出设备,这些输出对象包括文本数据或图像数据、或文本数据或图像数据的图形表示。尽管硬拷贝输出设备1415被描述为直接连接到设备1401,但这不是必需的。例如,硬拷贝输出设备1415可以经由网络接口,例如有线或无线网络,连接到设备1401。而且,尽管在图14中图示的设备1401是作为台式PC,但是在其他实施例中设备1401可以是膝上型计算机、工作站、中型计算机、大型机、嵌入式系统、电话、手持式或平板计算机、PDA或其他类型的计算机。图15是说明图14中所示的一个计算机的内部结构的框图。该计算机环境包括计算机中央处理单元("CPU")1501,构成操作系统或应用的计算机指令在这里被处理;显示器接口1502,其为在显示监视器1408上表现图形、图像和文本而提供通信接口和处理功能;键盘接口1504,为键盘1409提供通信接口;定点设备接口1505,为鼠标1410或等同的定点设备提供通信接口;数字输入接口1506,为视频和音频检测器1417提供通信接口;硬拷贝输出设备接口1508,为硬拷贝输出设备1415提供通信接口;随机存取存储器("RAM")1510,其中计算机指令和数据存储在易失性器件上供计算机CPU1501处理;只读存储器("ROM")1511,其中用于诸如基本输入和输出("I/O")、启动和接收来自于键盘1409的键击这样的基本系统功能的恒定的低级别系统代码或数据存储在非易失性存储器件中;存储器1520或其他合适类型的存储器(例如,诸如,随机存储器("RAM")、只读存储器("ROM")、可编程只读存储器("PROM")、可擦除可编程只读存储器("EPROM")、电可擦除可编程只读存储器("EEPROM")、磁盘、光盘、软盘、硬盘、可移动卡式磁带、闪存驱动器),其中存储包括操作系统1521、应用程序1522(根据需要包括网络浏览器应用1523、组合应用1524和其他应用1525)和数据文件1526的文件;以及计算机网络接口1516,其提供通过计算机网络连接1416与网络1406的通信接口。这些构成设备和计算机CPU1501通过计算机总线1527相互通信。简要地说,计算机程序产品有形地体现在机器可读存储介质的盘1520中。该计算机程序产品包括指令,该指令在被机器读出时运行,以促使数据处理装置访问用于业务流程的规范,该规范包括定义安全意图的安全注解和定义至少一部分业务流程以及调用外部服务的任务。计算机程序产品还包括指令,该指令运行以促使数据处理装置调用与安全注解相关联的安全模式,基于所调用的安全模式确认与满足安全意图的外部服务相关联的服务提供者,以及使用所确认的服务提供者调用业务流程。可替换地,有形地体现在盘1520中的计算机程序产品包括指令,该指令在被机器读出时运行,以促使数据处理装置应用安全框架到业务流程,该安全框架包括定义阶段,确认组合应用的安全目标;实现阶段,实现用于完成所确认的安全目标的安全模式;以及声明阶段,使用基于安全模式的组合应用中的安全注解来实现所确认的安全目标。该计算机程序产品还包括指令,该指令在被机器读出时运行,以促使数据处理装置基于应用安全框架引导外部策略协商指定组合应用和外部服务之间的公共策略,对组合应用和外部服务之间的每个交互的强制公共策略,以及基于安全目标调整外部服务对本地服务和对象的访问。RAM1510与计算机总线1527接口,以便在诸如操作系统应用程序的软件程序执行期间向计算机CPU1501和设备驱动器提供快速的RAM存储器。更具体地说,计算机CPU1501将计算机可执行的处理步骤/人固定盘驱动器1411或其他介质中加载到RAM1510的区域中,以^f更执行软件程序。数据存储在RAM1510中,而在执行期间由计算机CPU1501从RAM1510读取该数据。还是如图15所示,设备1401存储用于4乘作系统1521的计算机可执行代码,和诸如字处理、表格处理软件、演示文稿、游戏、网络浏览、JavaScript引擎或其他应用这样的应用程序1522。尽管使用上面描述的实施例提供给组合应用是可行的,然而也可以根据本公开以动态链接库("DLL")或者以其他应用程序的插件来实现这些功能,这些应用程序诸如像APPLESAFARI网络浏览器或MICROSOFTINTERNETEXPLOREI^网络浏览器这样的因特网网络浏览器。计算机CPU1501是许多高性能计算机处理器中其中之一,包括INTEL或AMD②处理器、POWERPC②处理器、]^18@精简指令集计算机("RISC")处理器、SPARC⑧处理器、ACORNRISCMachine("ARM")架构处理器、HPALPHASERVEI^处理器或用于大型机的专用计算机处理器。在附加布置中,计算机CPU1501多于一个处理单元,包括建立在高性能工作站和服务器上的多个CPU配置,或建立在大型机上的多个可扩展的处理单元。操作系统1521可以是用于基于INTEL和POWERPC⑧的APPLEMACOSX⑧的工作站和服务器;MICROSOFTWINDOWSNT/WINDOWS2000/WINDOWSXP工作站;MICROSOFTWINDOWSVISTA/WINDOWNT/WINDOWS2000/WINDOWSXP服务器;各种UNE^风格的操作系统,包括用于IBM工作站和服务器的AIX、用于SUN工作站和服务器的SUNOS、用于基于INTELCPU的工作站和服务器的LINUX、用于HP⑧工作站和服务器的HPUXWORKLOADMANAGER,用于SGI⑧工作站和服务器的IRIX、用于DigitalEquipmentCorporation(DEC)公司的计算机的VAX/VMS、用于基于HPALPHASERVER计算机的OPENVMS;用于移动设备的SYMBIANOS、NEWTON、IPOD、WINDOWSMOBILE⑧或WINDOWSCE、PALM、NOKIAOS("NOS")、OSE、或EPCXf、或者用于计算机或嵌入式系统的专用操作系统。用于操作系统1521的应用开发平台或冲匡架可以是BINARYRUNTIMEENVIRONMENTFORWIRELESS("BREW");Java平台、MicroEdition("JavaME")或Java2平台、MicroEdition("J2ME,,);PYTHON,FLASHLITE、或MICROSOFT.NETCompact。尽管图14和15说明了计算系统的一种可能的实施例,该计算系统执行被配置成用于完成组合应用调用的程序代码、或程序或处理步骤,但是也可以使用其他类型的计算机。对于形式上的问题,尽管术语"用户"一贯用于描述与这些流程交互的实体,但是这样的概括还旨在描述与这些流程在各种不同的、重叠或不重叠的状态下进行交互的多个相关的或不相关的、有生命的或自动的实体或人。类似地,术语"选择,,贯穿全文旨在表示的人的手动选择、非人力的自动选择或一些手动选择与自动选择的组合。最后,应当注意到,为简要起见,贯穿全文的术语"JavaScript,,旨在引用SUNMICROSYSTEMJAVASCRIPT编程语言,而术i吾"XML,,旨在引用'extensibleMakeupLanguage'。上面描述的增强框架遵循业务驱动的应用安全方法,根据该方法,业务应用的安全要求在业务流程规范级被表达为安全注解并且所需要的用于满足所表达的安全要求的安全体系可以被自动生成。具体地说,该框架通过使用直观的域专用安全语言,在组合流程级上提供基于模式的、安全策略的注解,通过在安全策略和安全性能之间执行匹配促使组合应用和服务提供者之间的自动干预,并且自动产生受保护的安全服务代理,该安全服务代理管理组合应用和服务提供者之间的安全通信。从而,用于组合应用的脚本框架提供了集成的建模环境和脚本语言,这使得对于更多地面向业务的开发者从现有的或新的构建块或服务中来构建新的应用变得更加容易。该框架遵循基于模型的脚本方法,该方法支持以一个集成模型的形式的组合应用的全部规范。该模型的某些部分将整个数据模型、服务调用的安排、事件管理、用户接口等描述为内部域专用语言。因而,通过提供域专用语言的体系来支持组合应用的端到端(end-to-end)的开发。为此,用于支持组合应用的所有相关联的逻辑和配置可以由一个业务流程开发者,使用少到一个工具集,以尽可能无缝的方式来定义和部署。因此,给业务流程开发者提供了这样的开发和执行环境,对于该环境不需要使用在不同的软件开发阶段期间经常使用的不同工具和抽象方法了。已经描述了许多实施例。然而,应当理解,可以在不脱离本公开的精神和范围的条件下进行各种修改。相应地,其他实施例在后附权利要求书的范围内。权利要求1.一种计算机实现的方法,包括访问用于业务流程的规范,该规范包括定义安全意图的安全注解,和定义至少一部分所述业务流程和调用外部服务的任务;调用与所述安全注解相关联的安全模式;基于所调用的安全模式,确认与满足所述安全意图的所述外部服务相关联的服务提供者;和使用所确认的服务提供者,调用所述业务流程。2.如权利要求l所述的方法,其中,使用策略域专用语言来表达所述安全注解。3.如权利要求1所述的方法,还包括解析所述安全注解。4.如权利要求1所述的方法,还包括基于所述安全注解更新安全策略数据库。5.如权利要求l所述的方法,其中,确认服务提供者还包括访问用于服务提供者列表的服务访问信息,该服务访问信息包括服务终点和服务操作签名;的安全性能;述安全意图相关联的安全目标和安全性能做比较;.能和与所.能的比较,选择所选定的服务提供者;将所选定的服务提供者存储在知识库中作为所确认的服务提供者;和基于存储所选定的服务提供者,产生指示服务提供者选择流程已经完成的事件。6.如权利要求l所述的方法,其中,使用所确认的服务提供者调用业务流程还包括基于所述安全意图为所确认的服务提供者产生安全服务代理,该安全服务代理管理对所述外部服务的安全服务调用操作;和使用所述安全服务代理调用所述外部服务。7.如权利要求6所述的方法,还包括对所述安全服务代理加密;和存储经过加密的安全服务代理。8.如权利要求7所述的方法,还包括检索所存储的安全服务代理;调用与所述安全服务代理相关联的安全服务调用操作;/人所述外部服务接收响应;和^使用所述安全^^务代理处理该响应。9.如权利要求l所述的方法,其中,所述服务是后端企业服务、外部企业到企业服务、或本地服务。10.如权利要求1所述的方法,其中,所述安全注解包括表示所述安全意图的变量,并且其中使用该变量调用所述的安全模式。11.如权利要求1所述的方法,其中,所述安全意图声明在使用外部网络服务时的外部强制策略,声明在公开所调用的业务流程作为网络服务时的策略,声明在所述任务要求人的交互时的基于任务的授权要求,以及声明基于任务的授权约束,该授权约束指定执行所述任务的顺序。12.如权利要求1所述的方法,其中,所述安全意图指定被允许执行所述任务的角色。13.如权利要求1所述的方法,其中,所述安全意图指定执行所述任务的顺序。14.如权利要求1所述的方法,其中,调用所述业务流程还包括执行所述任务。15.如权利要求14所述的方法,其中,所述安全模式包括第一入口点,用于在所述服务提供者被确认之前触发所述安全意图的强制;第二入口点,用于在所述任务被执行之前触发所述安全意图的强制;第三入口点,用于在所述任务被执行之后触发所述安全意图的强制。16.如权利要求15所述的方法,其中,调用所述业务流程还包括如果所述服务提供者尚未被确认,则选择所述第一入口点;如果所述任务尚未^C执行,则选择所述第二入口点;和如果所述任务已经被执行,则选择所述第三入口点。17.如权利要求1所述的方法,其中,确认所述服务提供者还包括产生服务请求;和基于所述安全模式,安全增强该服务请求。18.如权利要求1所述的方法,其中,所述安全意图定义消息机密性、加密安全意图、完整性意图、角色分配意图、或任务执行顺序意图。19.一种有形地体现在机器可读介质中的计算才几程序产品,该计算机程序产品包括指令,该指令在被机器读出时运行,以促使数据处理装置访问用于业务流程的规范,该规范包括定义安全意图的安全注解,和定义至少一部分所述业务流程和调用外部服务的任务;调用与所述安全注解相关联的安全^t式;基于所调用的安全模式,确认与满足所述安全意图的所述外部服务相关联的服务提供者;和使用所确认的服务提供者,调用所述业务流程。20.—种i殳备,包括存储介质,存储用于业务流程的规范,该规范包括定义安全意图的安全注解,和定义至少一部分所述业务流程和调用外部服务的任务;和处理器,该处理器被配置成调用与所述安全注解相关联的安全模式,基于所调用的安全模式,确认与满足所述安全意图的所述外部服务相关联的服务提供者,和使用所确认的服务提供者,调用所述业务流程。全文摘要公开了自动安全应用组合,在其中访问用于业务流程的规范,该规范包括定义安全意图的安全注解,定义至少一部分业务流程和调用外部服务的任务。调用与安全注解相关联的安全模式,并且基于所调用的安全模式确认与满足该安全意图的外部服务相关联的服务提供者。使用所确认的服务提供者调用业务流程。文档编号H04L29/08GK101415001SQ20081017004公开日2009年4月22日申请日期2008年10月15日优先权日2007年10月15日发明者单名谦,尤塞尔·卡拉布勒特,默里·斯波克申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1