websphere使用
总览
现代企业对企业通信已经发展并在规模和复杂性上不断增长,以至于企业消息流的管理和治理面临着严峻而艰巨的挑战。 这些消息流代表了大量的收入流,因此必须使用功能强大的工具仔细处理。 但是,必须制定政策来保护关键资产并保留标准业务惯例。
许多企业都在寻找可扩展的方法来建立和执行管理面向SOA的通信系统的面向业务的策略。 Web服务策略标准和机制旨在满足这些需求。
WebSphere提供了两种产品,它们可以一起提供使用WS-Policy标准设置和执行业务策略的能力:WebSphere Registry and Repository和WebSphere DataPower SOA Appliances。
本教程演示了如何结合使用这两种产品来实现以下业务策略:
- 绑定给定企业应用程序的所有请求都必须签名。
- 企业应用程序返回的所有响应都必须加密。
这是本教程中介绍的解决方案体系结构的说明。
图1.图1.解决方案架构

业务经理可以在注册表中设置业务策略。 然后,DataPower设备获取必要的配置信息,以在实时消息流中实施策略。
配置注册表
本教程演示了如何使用WSRR 7.5版中提供的功能对DataPower设备配置进行自动更新。 注册表的配置步骤与WSRR 6.2及更高版本相同。
通过配置注册表开始实施此策略实施体系结构。 注册表的配置包括以下三个基本步骤:
- 上传描述要外部化的企业服务的WSDL
- 上载描述要实施的政策的文件
- 在返回WSDL的注册表中创建保存的搜索
上载WSDL
要上载描述后端企业服务的WSDL,请登录WSRR控制台。 跟着这些步骤:
- 单击加载文档 。
图2.图2.加载文档
- 从本地文件系统加载
文件。Echo.wsdl
图3.图3.加载文件路径
- 单击“服务文档”区域中的“ WSDL文档” ,以验证新的WSDL文件是否可用。 请注意,注册表通过文件名(Echo.wsdl)和名称空间来标识文件。
图4.图4. 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:///目录,并根据需要进行修改。
该文件通过以下步骤上载到注册表。
- 单击页面顶部的“ 加载文档 ”。
- 确定策略文件在本地文件系统上的位置。
- 从“ 文档类型”下拉列表中选择“ 策略 ”。
- 单击确定 。 出现以下面板。
图5.图5.加载清单的文档
- 点击完成 。 您将看到上传成功的确认。
接下来,表示加密策略的文件必须上载到注册表。 步骤与之前的上传非常相似。
- 单击页面顶部的“ 加载文档 ”。
- 确定策略文件在本地文件系统上的位置。
- 从“ 文档类型”下拉列表中选择“ 策略 ”。
- 单击确定 。 出现以下面板。
图6.图6.加载清单的文档
- 点击完成 。
既然已经有了基本的策略表达式,那么必须将描述如何将策略绑定到WSDL的文件上载到设备。
请注意,WSDL文件不是通过文件名(Echo.wsdl)标识的,而是通过名称空间标识的。 如果注册表中使用此目标名称空间加载了多个WSDL文件,则该策略可能会附加到与您期望使用的文件不同的WSDL文件中。
请注意,“策略参考”是指分配给文件(“ wsp-sp-1-1-encrypted-parts-body”)中的策略的wsu:Id,而不是包含该ID的文件。
下图说明了策略附件文件如何连接WSDL和基本策略表达式。
图7.图7. WSDL文件和基本策略表达式之间的连接
以与上传其他策略文件相同的方式上传策略附件文件。
- 单击页面顶部的“ 加载文档 ”。
- 确定策略文件在本地文件系统上的位置。
- 从“ 文档类型”下拉列表中选择“ 策略 ”。
- 单击确定 。 出现以下面板。
图8.图8.策略附件文件
- 点击完成 。 您将看到上传成功的确认。
企业业务策略规定必须对所有请求进行签名,并且必须对所有响应进行加密。 我们的政策附件文件仅表示两个条件之一。 刚刚上传的附件文件仅处理已签名的请求; 加密的响应需要一个附加的策略附件文件。
请遵循与以前相同的步骤。
- 单击页面顶部的“ 加载文档 ”。
- 确定策略文件在本地文件系统上的位置。
- 从“ 文档类型”下拉列表中选择“ 策略 ”。
- 单击确定 。 出现以下面板。
图9.图9.策略附件文件
- 点击完成 。 您将看到上传成功的确认。
这样就完成了所有所需策略文件的上传。 通过列出可用的策略文档,您可以验证两个策略附件文件现在在注册表中都可用。
图10.图10.附件的策略文档列表
要确认WSRR已正确解析并将策略应用于WSDL文件,请在注册表中打开WSDL文件。 为此,请返回主屏幕并显示WSDL文档。 这将显示以下屏幕:
图11.图11. WSDL文件的详细信息
单击策略选项卡。 出现以下屏幕。
图12.图12.策略内容
请注意
echoOperationRequest
和
echoOperationResponse
消息下的策略表达式。 这验证了注册表是否已正确分析策略声明并将其应用于WSDL。 这是设备从注册表获取此WSDL时DataPower设备将收到的内容。
创建一个保存的搜索
要在注册表中创建保存的搜索,必须首先在注册表中创建查询(或搜索)。
以下是创建“保存的搜索”的步骤。
- 返回主屏幕。 单击左侧菜单上“查询”条目旁边的箭头。
图13.图13.查询条目
- 单击链接以启动查询向导。
- 从下拉列表中选择WSDL文档 。 您的屏幕应类似于以下内容:
图14.图14. WSDL文档
- 点击下一步。
- 在查询详细信息页面上显示的“ 名称”字段中指定WSDL的名称 ,如下所示。
图15.图15. WSDL名称
- 单击下一步 。
- 然后将显示查询详细信息的摘要,如下所示。
图16.图16. WSDL查询详细信息
- 点击完成 。 这将导致查询执行并返回结果。 该查询仅返回所需的WSDL。
图17.图17.保存查询
- 在“ 保存此搜索”下输入此搜索的名称(例如
)。 此名称将用于配置DataPower订阅对象。GetEchoWSDL
- 单击保存。
这样就完成了注册表的配置。
配置WebSphere DataPower设备
DataPower设备上的Web服务代理服务可以从WSRR保存的搜索中获取其配置信息,例如上面刚刚配置的搜索信息。 从DataPower固件版本4.0.1.0和WSRR 7.5开始,DataPower设备还可以在更新注册表中保存的WSDL时自动更新此信息。 此功能允许立即更新设备,而不必等待轮询间隔(可能长达几天)。 本节将详细介绍配置Web服务代理以使用“自动更新”功能以及“保存的搜索订阅”所需的步骤。
要启用自动更新功能,首先必须调整设备的XML管理接口的配置。 为此,请首先切换到设备的默认域,然后按照以下步骤操作。
- 从导航菜单中选择网络>管理> XML管理接口 。
- 选中“ WSRR订阅”框,如下所示。 请注意,如果您未使用固件4.0.1.0,则不会出现此框。
图18.图18. WSRR订阅选项
- 点击应用 。
现在返回到您将用于构建服务的应用程序域(通常不是默认域)。
单击“控制面板”上的“ Web服务代理”图标开始配置服务。
- 单击任何现有的Web Service代理对象列表下方的“ 添加”按钮。 将显示“ Web服务代理”配置过程的第一页。
- 在提供的字段中输入新代理的名称。
- 单击创建Web服务代理 。 出现代理的WSDL配置页面。
图19.图19.创建Web服务代理
- 单击WSRR保存的搜索订阅 。
出现一组空白字段,如下图所示。
图20.图20. WSRR服务器
- 在“ 新建”字段中输入Echo。 这是订阅对象的名称。
- 单击WSRR Server下的+按钮。 将打开一个新窗口,以显示用于创建新WSRR Server对象的表单。
- 如下图所示配置WSRR Server对象。
图21.图21. WSRR服务器对象
请注意, SOAP URL,用户名和密码的正确值将根据您的情况而变化。 WSRR服务器版本必须为7.5 或更高版本才能支持自动更新(而不是轮询)。 此版本必须为6.2或更高版本才能支持保存的搜索订阅。
- 单击查找保存的搜索 。 这使设备与注册表联系并获得所有可用的“已保存搜索”的列表。
图22.图22.查找保存的搜索
- 从列表中选择
,然后单击Apply 。GetEchoWSDL
- 从“ 同步方法”下拉列表中选择“
(Automatic
)。 当存储在WSRR服务器上的WSDL更改时,注册表将自动通知DataPower设备可用的较新版本,并且DataPower设备将从注册表中获取它,从而有可能更改代理提供的服务。 请注意,使用此选项还需要修改设备的XML管理接口的配置,如前所述。WSRR 7.5 or later
- 单击WS-Policy参数集下的+按钮。 因为此代理设置为强制执行WSDL中包含的策略(请注意WS-Policy强制模式 ),所以该代理将需要各种密钥和凭证集来验证请求中包含的签名,并在不包含响应消息时对其进行加密已经加密。
- 如图所示配置参数集 。
图23.图23.参数集
请注意,所有三个条目的“ 参数名称”和“ 参数值”都相同。 仅策略域会更改。 尽管可以仅使用一个Policy Domain条目来实现实施目标,但包括所有这三个条目可确保设备在参数集和WSDL之间不会遇到名称空间问题。 如果仅使用一个策略域,则它必须与策略文件中使用的名称空间匹配。
请注意,您将需要创建一组密钥(公共证书和匹配的私钥)以完成此配置。 您可以通过从“ 参数名称”下拉列表中选择“
Encryption Certificate
”,然后单击“ 参数值”下的+按钮来创建这些对象。
仅包含这些
Encryption Certificate
条目的参数集将提供代理执行策略所需的所有信息。
您可以选择添加一些其他参数,这些参数使代理忽略请求中包含的签名中的时间戳。 如果不忽略时间戳,签名将在5分钟内过期。 下面说明了这些参数的添加。
图24.图24.策略参数
- 参数集完成后,单击提交 。
现在,代理服务的配置页面将类似于下图所示。
图25.图25.代理服务配置
- 单击下一步 。 代理现在将联系WSRR服务器,并获取“已保存的搜索订阅”返回的所有WSDL。 然后,将为您提供建立前端处理程序和调整目标URL所需的输入。
- 从可用处理程序列表中选择一个现有的前端处理程序,或单击+按钮创建一个新的处理程序。 这个新的Handler应该使用HTTP协议,并且除了已启用的默认值外,还必须允许HTTP GET请求。
图26.图26.前端处理程序
- 单击“ 应用”以创建或修改前端处理程序。
- 在URI下的字段中键入
。/echo
- 单击编辑/删除下的添加 。
- 调整“ 远程”属性以连接到目标服务器。 该位置将根据您的情况而有所不同。 下载文件中包含提供正确响应的XML防火墙服务的完整配置。
图27.图27.本地端点处理程序
- 单击下一步 。 现在,代理服务将使用“策略”参数集完成服务的配置。 代理应该准备好接受请求。
图28.图28.配置Web服务代理
- 通过从Web服务代理服务中检索WSDL,验证代理是否包含策略语句。 为此,请在类似于以下内容的浏览器中发布一个URL:
http://DP_addr:3110/echo?wsdl
这将检索WSDL。 这是此WSDL的最后一部分,其中策略附件已正确地应用于请求和响应消息。
清单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>
- 通过单击代理的“ WSDL”页面上“ WSDL状态 ”下的“确定”,确认“已保存的搜索订阅”的状态 。
图29.图29.保存的搜索状态
- 将签名的请求文件提交给服务。 Curl命令将类似于以下内容:
http:// DP_addr:3110 / echocurl –data-binary @echo-signed
响应应该被加密,如此处所示。
图30.图30.命令响应
检查此事务的调试日志将显示代理查找并验证请求中包含的签名的时间点。 如果未找到签名,则代理将拒绝此请求,并返回错误消息“策略拒绝”。
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.图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.图32. WSDL名称空间重复
根据WSDL文档的名称保存的搜索查询将返回加载的WSDL的两个版本。 DataPower设备将仅使用它获得的第一个,可能是两个。
有几种使用WSRR管理版本控制的方法。
- 添加新的WSDL版本并删除旧的。 WSRR检测到此更改并将通知发送到DataPower设备,该设备随后获得新版本的WSDL。
- 使用分类。 可以对注册表中的每个工件进行分类,并基于分类值进行搜索。 下面说明了对WSDL的分类分配。
图33.图33. WSRR分类细节
请参阅左下角的分类属性。 WSRR包括一个标准的治理模型,旨在管理资产的生命周期。 请注意此图顶部的“管理”选项卡。 搜索可以输入标准生命周期分类之一,而不是此处显示的自定义分类。
这是“查询向导”面板,允许您选择要用于搜索条件的分类。
图34.图34. WSRR分类
- 使用WSDL文档的其他属性来区分版本。 这可以包括自定义属性,您可以使用与使用分类几乎相同的方式。 这是一个例子。
图35.图35.区分WSDL版本
SearchKey属性是添加到WSDL记录的自定义属性。
结论
在DataPower设备上运行的Web Service Proxy有效地执行企业建立并通过注册表配置表达的业务策略。 配置为使用“保存的搜索订阅”的所有WS Proxy服务将自动接收相同的配置。
这种产品组合使企业可以在一处建立业务策略,并在许多地方自动实施和执行该策略。 由于DataPower设备会通过订阅自动刷新自身,因此企业可以轻松更改策略,并且此更改将自动传播到DataPower实施点。
翻译自: https://www.ibm.com/developerworks/webservices/library/ws-dpwsrr/index.html
websphere使用