使用 WebSphere Service Registry and Repository 和 WebSphere DataPower 执行 SOA 消息安全策略

集成 WebSphere Service Registry and Repository 和 WebSphere DataPower

本文将向读者展示使用中央存储库(在本例中是 WebSphere Service Registry and Repository,即 WSRR)来实现管理 SOA 消息流的业务策略的一种具体方法,该策略通过 WebSphere DataPower SOA 设备得以执行。本文将详细介绍 WSRR 和 WebSphere DataPower 设备所需的配置步骤。

David Shute, WebSphere DataPower Enablement 项目经理, IBM

在收购之时 David Shute 是 DataPower 团队的一名成员,致力于 DataPower 技术相关工作已达六年之久。



2012 年 2 月 09 日

概述

现代企业间通信已经发生演变,规模和复杂性已增加到了一定的程度,以至于企业消息流的管理和治理极面临严峻而又艰难的挑战。这些消息流代表着巨大的收入来源,因此必须使用强大的工具加以谨慎处理。尽管如此,这些企业仍然必须将策略落实到位,以保护关键资产和维持标准的商业活动。

许多企业都在寻求可扩展的方法,以确立并执行管理其面向 SOA 通信系统的面向业务的策略。Web 服务策略标准和机制旨在满足这些需求。

WebSphere 提供了两种产品来共同交付使用 WS-Policy 标准设置和执行业务策略的能力,这两种产品是 WebSphere Registry and Repository 和 WebSphere DataPower SOA 设备。

本教程将演示如何结合使用这两种产品来实现以下业务策略:

  • 必须签署针对某个给定企业应用程序的所有请求。
  • 必须加密企业应用程序返回的所有响应。

下面是本教程中提出的解决方案架构的一个示意图。

图 1. 解决方案架构
解决方案架构

业务经理可以在注册表内设置业务策略。而 DataPower 设备需要获取必需的配置信息,以便在实时消息流中执行相应策略。

配置注册表

本教程将展示如何使用 WSRR 版本 7.5 中可用的功能对 DataPower 设备配置进行自动更新。注册表的配置步骤与 WSRR 版本 6.2 及更高版本的配置步骤相同。

通过配置注册表开始实现这一策略执行架构。注册表的配置包括以下三个基本步骤:

  • 上传描述要外部化企业服务的 WSDL
  • 上传描述要实现的策略的文件
  • 在注册表内创建一个返回 WSDL 的保存搜索

上传 WSDL

上传描述后端企业服务的 WSDL,然后登录到 WSRR 控制台。请执行以下这些步骤:

  1. 单击 Load Documents
图 2. 加载文档
加载文档
  1. 从您的本地文件系统加载 Echo.wsdl 文件。
图 3. 加载文件路径
加载文件
  1. 单击 Service Documents 区域中的 WSDL Documents,确认新的 WSDL 文件可用。请注意,注册表根据文件名 (Echo.wsdl) 和命名空间 (http://ibm.com/was/wssample/sei/echo/) 识别文件。
图 4. WSDL 清单
WSDL 清单

上传策略文件

现在基本的 WSDL 已经到位,且可供任何 DataPower 设备访问,是时候上传描述要执行的业务策略的策略文件了。以下是 wsp-sp-1-1-sign-parts.xml 策略文件的内容。

清单 1 wsp-sp-1-1-sign-parts.xml 策略文件
<?xml version='1.0' encoding='UTF-8'?>


<wsp:Policy 
   xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
   xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512"
   xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/
        oasis-200401-wss-wssecurity-utility-1.0.xsd"
   wsu:Id="wsp-sp-1-1-sign-parts">

  <dpe:summary xmlns="" xmlns:dpe="http://www.datapower.com/extensions">
    <dppolicy:domain xmlns:dppolicy="http://www.datapower.com/policy">
      http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512
    </dppolicy:domain>
    <description>
      Implements WS Security Policy 1.1 - support SignedParts
    </description>
  </dpe:summary>

  <wsp:ExactlyOne>
    <wsp:All>
      <sp:SignedParts>
        <sp:Body/>
      </sp:SignedParts>
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>

在本例中,文件表达必须签署所有 SOAP 消息的主体部分的策略。请注意,这在请求消息和响应消息之间没有什么差别。该文件可从 DataPower 设备的 store:/// 目录中获取。注意,您可以将这些文件复制到一个 local:/// 目录,并根据需要修改它们。

通过以下步骤将该文件上传到注册表。

  1. 单击页面顶部的 Load Documents
  2. 确认策略文件在您本地文件系统上的位置。
  3. Document Type 下拉列表中选择 Policy
  4. 单击 OK,然后会出现以下面板。
图 5. 用于加载清单的文档
用于加载清单的文档
  1. 单击 Finish。您会看到上传成功的确认。

接下来,必须将表达加密相关策略的文件上传到注册表。步骤与之前的上传步骤非常类似。

  1. 单击页面顶部的 Load Documents
  2. 确认策略文件在您本地文件系统上的位置。
  3. Document Type 下拉列表中选择 Policy
  4. 单击 OK。出现以下面板。
图 6. 用于加载清单的文档
用于加载清单的文档
  1. 单击 Finish

现在有了基本的策略表达,必须将描述如何将策略绑定到 WSDL 的文件上传到设备。

注意,WSDL 文件不是根据文件名 (Echo.wsdl) 识别的,而是根据命名空间 (http://ibm.com/was/wssample/sei/echo/) 进行识别。如果在注册表中加载了多个带有这个目标命名空间的 WSDL 文件,策略可能会被附加到一个与您期望使用的不同的 WSDL 文件。

注意,Policy Reference 是指分配给文件中策略的 wsu:Id ("wsp-sp-1-1-encrypted-parts-body"),而非包含该 ID 的文件。

下图展示 Policy Attachment 文件如何连接 WSDL 和基本策略表达。

图 7. WSDL 文件和基本策略表达之间的连接
WSDL 文件和基本策略表达之间的连接

用与上传其他策略文件相同的方式上传 Policy Attachment 文件。

  1. 单击页面顶部的 Load Documents
  2. 确认策略文件在您本地文件系统上的位置。
  3. Document Type 下拉列表中选择 Policy
  4. 单击 OK。此时出现以下面板。
图 8. Policy Attachment 文件
Policy Attachment 文件
  1. 单击 Finish。您会看到上传成功的确认。

企业业务策略表明,必须签署所有请求,且必须加密所有响应。我们的 Policy Attachment 文件仅表达两个条件之一。刚才上传的 Attachment 文件仅处理签署的请求;对于加密的响应,还另外需要一个 Policy Attachment 文件。

遵循与之前相同的程序。

  1. 单击页面顶部的 Load Documents
  2. 确认策略文件在您本地文件系统上的位置。
  3. Document Type 下拉列表中选择 Policy
  4. 单击 OK。出现以下面板。
图 9. Policy Attachment 文件
Policy Attachment 文件
  1. 单击 Finish。您会看到上传成功的确认。

这就完成了所有必需策略文件的上传。通过列出可用的 Policy 文档,您可以确认两个 Policy Attachment 文件现在都在注册表中可用。

图 10. 策略附件文档清单
策略附件文档清单

要确认 WSRR 得到正确解析并将策略应用到 WSDL 文件,打开注册表内的 WSDL 文件。为此,返回到 Home 界面并显示 WSDL 文档。这会显示以下界面:

图 11. WSDL 文件的细节
WSDL 文件的细节

单击 Policy 选项卡。此时会出现以下界面。

图 12. 策略内容
策略内容

注意 echoOperationRequestechoOperationResponse 消息下的策略表达。这可以确认注册表得到正确解析并将策略语句应用到 WSDL。当设备从注册表获取这个 WSDL 时,这就是 DataPower 设备会收到的内容。

创建一个保存搜索

要在注册表中创建一个保存搜索,首先需要在注册表内创建一个查询(或搜索)。

下面是创建保存搜索的步骤。

  1. 返回到 Home 界面。单击左边菜单上的 Queries 条目旁边的箭头。
图 13. Queries 条目
Queries 条目
  1. 单击链接,启动 Query Wizard。
  2. 从下拉列表中选择 WSDL Documents。您的界面应当类似于如下:
图 14. WSDL 文档
WSDL 文档
  1. 单击 Next。
  2. 在查询细节页面上显示的 Name 字段中指定 WSDL 的名称,如下所示。
图 15. WSDL 名称
WSDL 名称
  1. 单击 Next
  2. 然后查询细节汇总出现,如下所示。
图 16. WSDL 查询细节
WSDL 查询细节
  1. 单击 Finish。这会促使查询执行并返回结果。该查询仅返回所需的 WSDL。
图 17. 保存查询
保存查询
  1. Save this Search 下为这个搜索输入一个名称(比如 GetEchoWSDL)。该名称将用于配置 DataPower 订阅对象。
  2. 单击 Save。

这就完成了注册表的配置。

配置 WebSphere DataPower 设备

DataPower 设备上的一个 Web Service Proxy 服务可以从一个 WSRR Saved Search(比如上面配置的那一个)获取其配置信息。与 DataPower 固件版本 4.0.1.0 和 WSRR 版本 7.5 一样,DataPower 设备还可以在注册表中保存的 WSDL 被更新时自动更新该信息。该特性支持即时更新设备,而无需经过轮询间隔(可能长达几天)。本节将详细介绍配置 Web Service Proxy 来使用 Automatic Update 特性以及 Saved Search Subscription 所需的步骤。

为了启用自动更新特性,首先需要调整设备的 XML 管理界面的配置。为此,首先切换到设备的默认域,然后遵循以下步骤。

  1. 从导航菜单中选择 Network > Management > XML Management Interface
  2. 选中 WSRR Subscription 框,如下所示。注意,如果您没有使用固件 4.0.1.0,该框不会出现。
图 18. WSRR 订阅选项
WSRR 订阅选项
  1. 单击 Apply

现在返回到您将用于构建服务的应用程序域(通常不是默认域)。

通过单击控制面板上的 Web Service Proxy 图标开始配置服务。

  1. 单击任何现有 Web Service Proxy 对象的列表下的 Add 按钮。显示 Web Service Proxy 配置流程的第一页。
  2. 在提供的字段中输入新代理的名称。
  3. 单击 Create Web Service Proxy。出现代理的 WSDL 配置页面。
图 19. 创建 Web Service Proxy
创建 Web Service Proxy
  1. 单击 WSRR Saved Search Subscription

出现一组空字段,如下所示。

图 20. WSRR Server
WSRR Server
  1. New 字段中输入 Echo。这是 Subscription 对象的名称。
  2. 单击 WSRR Server 下的 + 按钮。这会打开一个新窗口,可用它来显示用于创建新 WSRR Server 对象的窗体。
  3. 如下图所示配置 WSRR Server 对象。
图 21. WSRR Server 对象
WSRR Server 对象

注意,SOAP URL,UsernamePassword 的正确值会随环境而变化。WSRR Server Version 必须是 7.5 或更高版本 才能支持自动更新(而非轮询)。该版本必须是 6.2 或更高才能支持保存搜索订阅。

  1. 单击 Find a Saved Search。这促使设备联系注册表并获取一个包含所有可用保存搜索的列表。
图 22. Find a Saved Search
Find a Saved Search
  1. 从列表中选择 GetEchoWSDL 并单击 Apply
  2. Synchronization Method 下拉列表中选择 AutomaticWSRR 7.5 或更高版本)。当存储在 WSRR 服务器上的 WSDL 变化时,注册表会自动通知 DataPower 设备有一个较新版本可用,且 DataPower 设备会从注册表中获取它,期间可能更改代理提供的服务。注意,要使用该选项,还需要修改设备的 XML Management Interface 的配置,如前所述。
  3. 单击 WS-Policy Parameter Set 下的 + 按钮。由于将该代理设置为执行 WSDL 中包含的策略(注意 WS-Policy Enforcement Mode),代理将需要各组密钥和凭据来验证请求中包含的签名,并且如果响应消息没有加密的话就对其进行加密。
  4. 配置 Parameter Set,如下所示。
图 23. 参数集
参数集

注意,对于所有三个条目来说,Parameter NameParameter Value 一样的;只有 Policy Domain 有些变化。虽然可以仅使用一个 Policy Domain 条目来达到执行目标,但是使用全部三个条目可确保设备不会在参数集和 WSDL 之间遇到命名空间问题。如果您仅使用一个 Policy Domain,它必须与 Policy 文件中用到的命名空间相匹配。

注意,您将需要创建一组密钥(公共证书和匹配的私有密钥)来完成这一配置。您可以创建这些对象,方法就是从 Parameter Name 下拉列表中选择 Encryption Certificate,然后单击 Parameter Value 下的 + 按钮。

仅包含这些 Encryption Certificate 条目的一个 Parameter Set 可提供代理执行策略所需的所有信息。

您也可以选择性地添加一些其他参数,让代理忽略请求中包含的签名中的时间戳。如果时间戳未被忽略,签名会在 5 分钟内到期。下图展示这些参数的添加。

图 24. Policy 参数
Policy 参数
  1. 参数集完成时单击 Submit

代理服务的配置页面现在看起来类似于下图。

图 25. 代理服务配置
代理服务配置
  1. 单击 Next。代理现在会联系 WSRR 服务器并获取 Saved Search Subscription 返回的任何 WSDL。然后会为您提供建立 Front Side Handler 和调整目标 URL 所需的输入。
  2. 从可用处理程序列表中选择一个现有的 Front Side Handler 或单击 + 按钮来创建一个新的处理程序。这个新处理程序应当使用 HTTP 协议,除了启用的默认值之外,还必须支持 HTTP GET 请求。
图 26. 前端处理程序
前端处理程序
  1. 单击 Apply 创建或修改 Front Side Handler。
  2. 在 URI 下的字段中键入 /echo
  3. 单击 Edit/Remove 下的 Add
  4. 调整 Remote 属性,以连接到目标服务器。该位置会随您的环境而变化。提供正确响应的 XML 防火墙服务的完整配置包含在下载文件中。
图 27. 本地端点处理程序
本地端点处理程序
  1. 单击 Next。代理服务现在会使用 Policy 参数集完成服务的配置。代理应当准备好接受请求了。
图 28. 配置 Web 服务代理
配置 Web 服务代理
  1. 通过从 Web Service Proxy 服务检索 WSDL 来确认代理是否包含 Policy 语句。方法就是在浏览器中发出一个类似的下面的 URL:

    http://DP_addr:3110/echo?wsdl

这会检索 WSDL。下面是这个 WSDL 的最后一部分,其中 Policy Attachment 被正确地应用到请求和响应消息。

清单 2 请求和响应消息
<wsdl:binding name="EchoSOAP" type="ns0:EchoServicePortType">
   <soap11:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
      <wsdl:operation name="echoOperation">
	<soap11:operation soapAction="echoOperation" style="document"/>

                 <wsdl:input name="echoOperationRequest">
		<wsp:PolicyReference URI="#policy1"/>
		     <soap11:body use="literal"/>
	      </wsdl:input>
	      
	      <wsdl:output name="echoOperationResponse">
		<wsp:PolicyReference URI="#policy0" />
		      <soap11:body use="literal"/>
	       </wsdl:output>

        </wsdl:operation>
</wsdl:binding>
  1. 通过单击代理的 WSDL 页面上的 WSDL Status 下的 Okay,检查 Saved Search Subscription 的状态。
图 29. 保存搜索的状态
保存搜索的状态
  1. 向服务提交一个签署的请求文件。一个 Curl 命令将类似于:

    curl –data-binary @echo-signed
    http://DP_addr:3110/echo

响应应当加密,如下所示。

图 30. 命令响应
命令响应

检查该事务的调试日志,其中显示代理查找和验证请求中包含的签名的时间点。如果未找到签名,代理会拒绝该请求,并返回错误消息 "Rejected by Policy"。

11:02:06	multistep	info	487360	request	9.32.115.47	
0x80c00002	wsgw (RegistryPolicy): rule (message-input_127_5-req): 
#2 filter: 'INPUT store:///verify.xsl' completed OK.

11:02:06	multistep	debug	487360	request	9.32.115.47	
0x80c0004e	wsgw (RegistryPolicy): Stylesheet URL to compile is 
'store:///verify.xsl'

下面是显示代理将加密应用到未加密的响应消息的条目。

11:02:06	multistep	info	487360	response	
9.32.115.47	0x80c00002	wsgw (RegistryPolicy): rule 
(message-output_127_6-process-resp): 
#4 filter: 'enc-output store:///required-elements-filter.xsl' completed OK.

11:02:06	multistep	debug	487360	response	
9.32.115.47	0x80c0004e	wsgw (RegistryPolicy): Stylesheet URL 
to compile is 'store:///required-elements-filter.xsl'

11:02:06	multistep	info	487360	response	
9.32.115.47	0x80c00002	wsgw (RegistryPolicy): rule 
(message-output_127_6-process-resp): 
#3 Conditional on INPUT completed OK.

11:02:06	multistep	info	487360	response	
9.32.115.47	0x80c00002	wsgw (RegistryPolicy): rule 
(message-output_127_6-process-resp): 
#2 xform: 'Transforming INPUT with
http://127.0.0.1:63502/DocumentCryptoMap.xml?objDomain=Ryan&
objName=message-output_127_6-1-conditional-content-encrypt-2-enc-enc-cryptomap 
results stored in enc-output' completed OK.

11:02:06	multistep	debug	487360	response	
9.32.115.47	0x80c0004e	wsgw (RegistryPolicy): Stylesheet URL to compile is
'http://127.0.0.1:63502/DocumentCryptoMap.xml?objDomain=Ryan&
objName=message-output_127_6-1-conditional-content-encrypt-2-enc-enc-cryptomap'

诊断

WS-Proxy 生成与许多订阅操作相关的提示性消息。下面是代理生成的与订阅和自动通知相关的一些日志条目。

下面是与 WSRR 服务器的初始注册交换:

09:51:16	wsrr	notice	69503	 	  	
0x810000c8	wsrr-saved-search-subscription (Echoer): 
WSRR subscriber registered using ws-proxy RegistryPolicy

09:51:16	wsrr	notice	69503	 	  	
0x810000c9	wsrr-saved-search-subscription (Echoer): 
WSRR subscriber unregistered using ws-proxy RegistryPolicy

以下订阅是通过 WSRR 服务器创建的(默认域日志):

10:46:56	wsrr	info	101668	 	  	
0x81000451	Resolving 
'wsrr://WSRR25/376a0c37-eafa-4ac1.bef4.660fd266f4cc/#wsp-sp-1-1-encrypted-parts-body'.

10:46:56	wsrr	info	101668	 	  	
0x81000451	Resolving 
'wsrr://WSRR25/081ecd08-4c2b-4b32.9183.2b884d2b837c/#wsp-sp-1-1-sign-parts'.

10:46:56	wsrr	info	101668	 	  	
0x81000451	Resolving 'wsrr://WSRR25/8e42008e-125c-4cc4.bb24.147558142425/'.

10:46:56	wsrr	info	66257	 	  	
0x810004d0	wsrr-saved-search-subscription (Echoer): 
The subscription 'Echoer' contains '1' WSDL files.

10:46:56	wsrr	debug	66257	 	  	
0x810004ef	wsrr-saved-search-subscription (Echoer): 
Setting WSRR Event Notification bsrURI '0c12ef0c-baca-4aaf.aa37.a4581ca4373a'.

10:46:56	wsrr	debug	69663	 	  	
0x810004ce	The subscription 'Echoer' is creating the PolicyReference 
'wsrr://WSRR25/376a0c37-eafa-4ac1.bef4.660fd266f4cc/#wsp-sp-1-1-encrypted-parts-body' 
for the WSDL with bsrURI '8e42008e-125c-4cc4.bb24.147558142425'.

10:46:56	wsrr	debug	69663	 	  	
0x810004cd	The subscription 'Echoer' is creating the AppliesTo 
URI 'http://ibm.com/was/wssample/sei/echo/#wsdl11.message(echoOperationResponse)' 
for the WSDL with bsrURI '8e42008e-125c-4cc4.bb24.147558142425'.

10:46:56	wsrr	debug	69663	 	  	
0x810004cc	The subscription 'Echoer' is creating a 
PolicyAttachment for the WSDL with bsrURI '8e42008e-125c-4cc4.bb24.147558142425'.

10:46:56	wsrr	debug	69663	 	  	
0x810004ce	The subscription 'Echoer' is creating the 
PolicyReference 
'wsrr://WSRR25/081ecd08-4c2b-4b32.9183.2b884d2b837c/#wsp-sp-1-1-sign-parts' 
for the WSDL with bsrURI '8e42008e-125c-4cc4.bb24.147558142425'.

10:46:56	wsrr	debug	69663	 	  	
0x810004cd	The subscription 'Echoer' is creating the AppliesTo URI 
'http://ibm.com/was/wssample/sei/echo/#wsdl11.message(echoOperationRequest)' 
for the WSDL with bsrURI '8e42008e-125c-4cc4.bb24.147558142425'.

10:46:56	wsrr	debug	69663	 	  	
0x810004cc	The subscription 'Echoer' is creating a 
PolicyAttachment for the WSDL with bsrURI '8e42008e-125c-4cc4.bb24.147558142425'.

10:46:56	wsrr	info	69663	 	  	
0x810004cb	The subscription 'Echoer' has a 
WSDL with bsrURI '8e42008e-125c-4cc4.bb24.147558142425' 
and '2' policy attachments.

10:46:56	wsrr	info	69663	 	  	
0x8100044d	The subscription 'Echoer' of type Saved-Search contains 
the WSDL 'Echo.wsdl' with bsrURI '8e42008e-125c-4cc4.bb24.147558142425' 
and location 'Echo.wsdl'.

10:46:55	wsrr	debug	69663	 	  	
0x810004e6	The subscription 'Echoer' creating a WSRR Notification 
Event for 'GetEchoWSDL' with bsrURI '7ee5467e-0bb0-40ef.9b3d.567bf4563d6c', 
Fetch Policy 'true', Notify IP '9.70.154.57', Notify Port '5550', and 
renewal interval '1'.

10:46:55	wsrr	info	69663	 	  	
0x810004e2	The subscription 'Echoer' is creating 
a WSRR Notification Event for 'GetEchoWSDL' of type 
'saved-search' with bsrURI '7ee5467e-0bb0-40ef.9b3d.567bf4563d6c'.

10:46:55	wsrr	notice	69503	 	  	
0x810000c8	wsrr-saved-search-subscription (Echoer): 
WSRR subscriber registered using ws-proxy RegistryPolicy

在这里,我们可以看到已将新 WSDL 纳入代理配置中:

11:37:54	ws-proxy	info	91567	 	  	
0x81000081	wsgw (RegistryPolicy): 
Adding new wsdl '8e42008e-125c-4cc4.bb24.147558142425'.

下面是应用程序域日志中的一个更新通知条目:

11:37:54	ws-proxy	info	91567	 	  	
0x8100007c	wsgw (RegistryPolicy): Process update from subscription 
Echo for wsdl wsrr://WSRR25/8e42008e-125c-4cc4.bb24.147558142425/, 
service key 8e42008e-125c-4cc4.bb24.147558142425.

下面是默认域中一个更新通知的日志条目:

图 31. 更新通知
更新通知

如果订阅由于 WSRR 上的一个变更(比如删除保存搜索)或 DataPower 设备上的一个变更而变得无效,应用程序域中的日志条目如下所示:

10:41:23	wsrr	warn	65121	 	  	
0x810000fc	wsrr-saved-search-subscription (Echoer): 
WSRR subscription Echoer fail to retrieve files from server

10:41:23	wsrr	error	65121	 	  	
0x810004f2	wsrr-saved-search-subscription (Echoer): 
Encountered an error while creating Automatic Subscription.

10:41:23	wsrr	debug	65121	 	  	
0x810004f6	wsrr-saved-search-subscription (Echoer): 
WSRR Event Notification bsrURI cleared.

10:41:23	wsrr	error	69663	 	  	
0x8100044f	Failed to fetch WSDL, Concept, or Saved 
Search 'GetEchoWSDL0' from 
http://9.70.155.25:9080/WSRR/6.2/Metadata/XML/Query/GetEchoWSDL0.

10:41:23	network	error	69663	 	  	
0x80e00040	url-open: Remote error on url 
'http://9.70.155.25:9080/WSRR/6.2/Metadata/XML/Query/GetEchoWSDL0'

当错误得到纠正后,您会再次看到出现订阅初始化序列,如上所示。

管理版本

端点服务常常随客户端对它们的使用而演化,通过变更来满足客户需求,提供新功能,或维持与标准的兼容性。这种变更通常需要修改描述服务的 WSDL 文件。使用自动更新的订阅的一个主要好处在于,每当描述端点服务的 WSDL 变更时,会自动更新绑定到这些订阅的 DataPower 服务。当服务功能发生变化时,WSDL 会变更,并且新版本的 WSDL 会被加载到 WSRR 服务中。

WSRR 服务不像常规做法那样重写现有文件。因此,当现有 WSDL 的一个新版本被加载到 WSRR 中时,注册表中会存在具有相同名称和命名空间的两个 WSDL 版本。下面就是一个示例:

图 32. WSDL 命名空间副本
WSDL 命名空间副本

取决于 WSDL 文档名称的一个已经保存的搜索查询会同时返回已加载的 WSDL 的两个版本。DataPower 设备将仅使用它获得的第一个版本,这可能是两个版本中的任意一个。

使用 WSRR 管理版本有多种方法。

  1. 添加新的 WSDL 版本并删除旧版本。WSRR 检测这一变更并向 DataPower 设备发送通知,接着该设备会获取新的 WSDL 版本。
  2. 使用分类。可以为注册表中的每个项目进行分类,并基于分类值执行搜索。下图展示向 WSDL 指派分类的细节。
图 33. WSRR 分类细节
WSRR 分类细节

参见左下角的 Classifications 属性。WSRR 包含一个标准的治理模型,旨在管理资产的生命周期。注意该图解顶部的 Governance 选项卡。搜索可以基于标准生命周期分类之一,而非下面显示的一个自定义分类。

下面是 Query Wizard 面板,允许您为某个搜索条件选择要使用的分类。

图 34. WSRR 分类
WSRR 分类
  1. 使用 WSDL 文档的其他属性来区分版本。这可以包含自定义属性,您可以与使用分类差不多的方式使用自定义属性。下面是一个示例。
图 35. 区分 WSDL 版本
区分 WSDL 版本

SearchKey 属性是添加到 WSDL 记录的一个自定义属性。

结束语

运行于 DataPower 设备之上的 Web Service Proxy 可以有效地执行企业建立的业务策略,并通过配置注册表表达这些策略。所有经过配置可以使用 Saved Search Subscription 的 WS Proxy 服务都会自动收到相同的配置。

这一产品组合能够让企业在一个地方确立业务策略,并自动在许多地方实现和执行该策略。由于 DataPower 设备通过订阅自动刷新自身,企业可以轻松改变策略,这一变更会自动传播到 DataPower 执行点。


下载

描述名字大小
本文样例文件EchoPolicyFiles.zip2.4KB

参考资料

学习

  • IBM developerWorks 中国 WebSphere 专区:为使用 WebSphere 产品的开发人员准备的技术信息和资料。这里提供产品下载、how-to 信息、支持资源以及免费技术库,包含 2000 多份技术文章、教程、最佳实践、IBM Redbook 和在线产品手册。

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, WebSphere
ArticleID=792478
ArticleTitle=使用 WebSphere Service Registry and Repository 和 WebSphere DataPower 执行 SOA 消息安全策略
publish-date=02092012