级别: 中级 Joel Smith, 高级软件工程师, IBM
2009 年 2 月 23 日
使用 IBM® WebSphere® Application Server V6.1 的 Web Services Feature Pack 和 IBM WebSphere DataPower SOA Appliances 可最大限度地实现 Web 服务的灵活性。Feature Pack 是包括多个 Web 服务规范 (WS*) 的基于标准的实现。WebSphere DataPower SOA Appliances 以极高的速度运行时能够充当防火墙和提供安全功能。将 WebSphere Application Server 与 WebSphere DataPower SOA Appliances 集成可获得安全、高性能的 Web 服务。本系列文章将指导您完成将 WebSphere DataPower SOA Appliances 与 WebSphere Application Server 集成以改进安全 Web 服务安装的过程。
系统要求
要按照本文进行操作,请确保已拥有:
- 带 Web Services Feature Pack 的 WebSphere Application Server V6.1
- IBM Rational Application Developer V7.0.0.6 或更高版本
- 用于 Web 服务安全的 JCEKS 密钥存储库形式的安全凭据或指定加密操作所需的私钥或公开证书。
关于本文
本文的内容包括:
- 使用非对称加密部署和配置安全的 Web 服务。
- 使用 Rational Application Developer 导入示例 EAR 文件和配置 Web 服务安全策略,并为 Web 服务客户机绑定附件
- 使用 WebSphere Application Server 控制台为示例服务配置 Web 服务安全策略
- 准备 Java™ Cryptography Extension (JCE) 和 JCEKS 安全凭据。
引言
WebSphere Application Server V6.1 的 Web Services Feature Pack 扩展了 Web 服务功能,允许以异步方式可靠而安全地发送消息。此扩展功能支持关键的 Web 服务标准,允许与多个供应商产品灵活交互。支持的标准包括:
- Java API for XML Web Services (JAX-WS)
- WS-Security
- WS-Addressing
- WS-Reliable Messaging
- WS-Secure Conversation
- SOAP Message Transmission Optimization Mechanism (MTOM)
为使用这些不同的标准,此模型提供了允许灵活配置的 Web 服务引擎。策略和策略集以各种组合方式提供,简化配置复杂级别的 Web 服务的流程。
WebSphere DataPower SOA Appliances 是专门构建的网络设备,可保护和加快 XML 和 Web 服务处理。尽管 WebSphere DataPower SOA Appliances 具有一系列的功能和特点,但本文重点介绍 Web 服务方面。与本文相关的 Web 服务功能是针对以下方面的 XML 消息级别的安全处理:加密和解密、数字签名和验证、WS-Security、XML 模式验证、Web 服务管理支持以及详细日志记录和审核。安全的 XML 处理可以是资源极为密集型的。WebSphere DataPower SOA Appliances 提供传统 XML 引擎中可能没有的 XML 处理和安全。允许 WebSphere DataPower SOA Appliances 执行 Web 服务请求的处理密集型部分可以提高应用服务器的 Web 服务的执行速度,并减轻负载。
WebSphere Application Server V6.1 的 Web Services Feature Pack 包括支持各种 Web 服务安全配置的若干 Web 服务安全策略和策略集。可以从 WebSphere Application Server 控制台选择和配置这些策略和策略集。也可以从控制台创建新的策略。灵活配置 Web 服务的混合级别的处理可提供具有高度针对性的安全和可靠级别。此模块性还允许单独处理 Web 服务部分。本文将介绍如何使用 Rational Application Developer 部署示例 Web 服务和配置 WS-Security 缺省策略集。
本系列文章的第 2 部分将介绍如何将 WS-Security 处理的模块化部分从服务器分流到 WebSphere DataPower SOA Appliances,并将其余的 Web 服务处理委托给应用服务器。这允许设备执行资源密集型处理,并允许应用服务器处理应用程序业务逻辑。
缺省的 WS-Security 策略通过对消息正文和标题进行数字签名来保护消息的完整性,并通过加密正文确保消息的机密性。将缺省 WS-Security 策略应用到部署的 Web 服务来配置 Web 服务引擎,以便 WS-Security 模块接收初始请求。通过处理 SOAP 消息来解密消息内容。然后验证数字签名。如果成功处理消息,则会将其发送到 Web 服务引擎中的下一个模块。生成发送回客户机的响应时,WS-Security 模块逆向处理安全流程。生成数据签名,并将其放在 SOAP 消息中。然后按照策略中指定的方式对 SOAP 消息加密,将请求返回到客户机。图 1 显示了此 Web 服务配置示例。
图 1. 带有缺省安全策略的 Web 服务配置
在此场景中,WebSphere Application Server V6.1 的 Web Services Feature Pack 中的 Web 服务引擎处理 SOAP 消息的所有元素。当部署应用程序时,WS-Security 运行时插入 Web 服务处理链中。在部署描述符中指定定义所需 WS-Security 选项的配置参数,以确定如何构建 Web 服务处理链。可以使用 WebSphere Application Server 控制台或 Rational Application Developer 指定这些 WS-Security 参数。本文使用 Rational Application Developer 方法。
示例配置步骤
下面的配置步骤使用 Rational Application Developer 导入和导出工作 Web 服务客户机示例。此场景对于理解安全处理所使用的完全配置的 Web 服务客户机应用程序非常有帮助。您可以从控制台将 Web 服务客户机安装在 WebSphere 应用服务器上。本示例场景使用 WebSphere Application Server V6.1 的 Web Services Feature Pack 上附带的 EchoService 示例和安全凭据。IBM Rational Application Developer 包含配置示例 Web 服务客户机所使用的 WS-Security 缺省策略模板。
WebSphere Web 服务配置
请执行以下步骤:
- 请确保安装了 Web 服务示例(信息中心中描述了如何执行此操作)。
- 要验证增量式进度,请安装和配置 EchoService 客户机和服务。
- 通过在 http://localhost:9080/wssamplesei/demo 上启动浏览器来运行示例客户机。
- 使用消息类型 Synchronous Echo 应能得到成功的响应
echo strings。
在下一步中,您将配置 WS-Security 策略和绑定,以验证回显消息是否成功进行安全通信。如有必要,从工作客户机和服务配置开始可简化调试,因为已完成较复杂的配置步骤。
使用 Rational Application Developer 进行 Web 服务客户机配置
下列步骤描述了如何使用 Rational Application Developer 导入 WebSphere Application Server Web Services Feature Pack WSSampleClientSei.ear 文件,配置 WS-Security 缺省策略和绑定,导出 .ear 文件并将其部署到 WebSphere Application Server。
- 启动 Rational Application Developer。
- 输入名为
MyEchoClient 的新工作区。
- 选择 File > Import。
- 在 J2EE 文件夹中,选择 EAR file,然后选择 Next。
图 2. 导入 Web 服务客户机 EAR 文件
- 对于 EAR file 字段,浏览并选择 app_server_root/samples/lib/WebServicesSamples/WSSampleClientSei.ear,然后单击 Next。
- 在 New Server Runtime 面板中,在名称字段的末尾添加
WSFP,以指示您正在使用 Web Services Feature Pack 目标运行时。
- 在 Installation directory 字段中,输入安装服务器的路径。
图 3. 新的服务器运行时
- 单击 Finish。图 2 中显示的窗口将再次显示。
- 再次单击 Finish。
- 从左边的 Project Explorer 窗格中,选择并右键单击 SampleClientSei,然后选择 Project Facets。
- 单击 Add/Remove Project Facets。
- 选择 WebSphere 6.1 Feature Pack for Web Services。
- 单击 Finish,然后单击 OK。
图 5. Rational Application Developer Project Facets
- 通过在主菜单上单击 File > New > Other 为客户机应用程序创建策略集附件。
- 在新建导向中,展开 Web Services 和 Policy Set,然后单击 Client Side Policy Set Attachment。
图 6. 创建客户端策略集附件
- 单击 Next。
- 单击 Add 以显示 End Point definition Dialog 窗口。选择以下内容:
- 服务名称:EchoService
- 端点:EchoServicePort
- 操作名称:echoOperation
- 策略集:WSSecurity default
- 绑定:MyWSSecurityBinding
- 单击 OK。
图 7. 端点绑定定义
现在,您需要为数字签名设置绑定配置。
- 对于数字签名出站消息安全配置,请选择 WSSecurity,然后选择 Configure。
- 在 Outbound Message Security Configuration 窗口中:
- 在 Key Information Type 字段中输入
STRREF。
- 在 Transform Algorithm 中字段中输入
http://www.w3.org/2001/10/xml-exc-c14n#。
- 单击 Key Store Settings 按钮。
- 在 Key Store Settings Dialog 窗口中:
- 在 Keystore Path 字段中输入
${USER_INSTALL_ROOT}\etc\ws-security\samples\dsig-sender.ks。
- 在 Keystore Password 字段中输入
client。
- 对于 Keystore Type,请选择 JKS。
- 在 Key Alias 字段中,输入
soaprequester。
- 在 Key Password 字段中,输入
client。
- 单击 OK 完成操作。
图 8. 客户机数字签名密钥存储库设置
- 要为 XML 加密配置绑定配置,请单击 Binding Configuration Dialog 窗口顶部的 XML Encryption Configuration 选项卡。
- 在 Outbound Message Security Configuration 中,在 Key Information Type 字段中输入
KEYID。
- 单击 Outbound Message Security Configuration 旁边的 Key Store Settings 按钮。在 Key Store Settings Dialog 窗口中:
- 在 Keystore Path 字段中输入
${USER_INSTALL_ROOT}\etc\ws-security\samples\enc-sender.jceks。
- 在 Keystore Password 字段中输入
storepass。
- 在 Keystore Type 下拉列表中选择 JCEKS。
- 在 Key Alias 字段中输入
Bob。
图 9. 客户机加密密钥存储库设置
- 单击 OK 完成操作。
-
单击 Inbound Message Security Configuration 旁边的 Key Store Settings 按钮。
在 Key Store Settings Dialog 窗口中:
- 在 Key Store Path 字段中输入
%install%\etc\ws-security\samples\enc-sender.jceks。
- 在 Keystore Password 字段中输入
storepass。
- 对于 Keystore Type,选择 JCEKS。
- 在 Key Alias 字段中输入
Alice。
- 单击 OK 完成操作,然后再次单击 OK 以关闭 Binding Configuration Dialog 窗口。
- 单击 Finish 以关闭 Client Side Policy Set Attachment 窗口。
图 10. 使用 Rational Application Developer 进行 Web 服务客户机绑定配置
- 完成 WS-Security 策略和绑定后,现在您可以发布或导出 Web 服务客户机应用程序,并将其安装在 WebSphere Application Server 上进行测试。
- 测试之前,请使用 WS-Security 缺省策略和绑定附件配置 EchoService,方法是在 WebSphere Application Server 控制台的左窗格中展开 Services,单击 Service providers,然后在右窗格中单击 EchoService。
图 11. 配置 EchoService WS Security 策略
- 在右窗格中选择所有条目。
- 单击 Attach 下拉菜单,并选择 WSSecurity default。选择所有条目。
- 单击 Assign Binding 下拉菜单,并选择 default。
- 在屏幕的顶部,单击 Save。现在已使用 WS-Security 配置了 EchoService。您可以在 Name 字段中单击 EchoService,以确认如图12 中显示的 WS-Security 和绑定设置。
图 12. 已应用 WS-Security 策略和绑定的 EchoService
- 通过将浏览器指向 http://localhost:9080/wssamplesei/demo 测试客户机应用程序。您可以使用安装 Web 服务客户机应用程序的应用服务器的主机名替换 URL 中的 localhost。如果在其他端口安装 Web 服务客户机应用程序,请确保使用安装 Web 服务客户机应用程序的端口。
- 现在,应用程序可以将安全消息发送到后端服务。如图 13 所示:
- 选择要发送的消息类型。
- 输入要发送的测试消息字符串。
- 接受缺省的消息计数。
- 在 Service URI 字段中,您可以选择 IP 地址、主机名和应用服务器的端口,以及应发送消息的端口。Send Message 按钮下面的窗口中将回显消息。
图 13. 绑定配置
结束语
在本文中,您使用 Rational Application Developer 导入了示例 EchoService 客户机 EAR 文件,并使用 WS-Security 启用它;在 WebSphere Application Server 上安装了示例 Web 服务客户机;安装并使用 WS-Security 配置了 EchoService;并使用浏览器输入了从 Web 服务 EchoService 客户机应用程序发送到 Web 服务 EchoService 服务的消息。消息被回显到 Web 服务客户机。
从客户机将消息发送到网络之前,WS-Security 使用了非对称密钥对消息进行数字签名和加密。在应用服务器收到消息时,WS-Security 使用了非对称密钥验证数字签名并对消息解密。然后将消息传递到 Web 服务进行处理。在此场景中,消息仅在响应中回显。在将消息发送到网络之前,WS-Security 使用了非对称密钥对响应消息进行数字签名和加密。WS-Security 在客户机接收响应,验证数字签名和解密消息。然后,消息在浏览器屏幕上回显。
在本系列文章的第 2 部分中,您将使用 WebSphere DataPower SOA Appliances 执行 WS-Security 数字签名和验证,以及消息处理的加密和解密部分。
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Joel Smith 一直从事各种操作系统、I/O 和通信子系统方面的工作。近年来,他一直在普及计算、应用服务器 Web 服务和 Web Services Security 领域从事应用程序中间件的开发。 |
对本文的评价
|