引言 Web 服务是一些虚拟软件组件,可以通过各种协议和格式对它进行访问和调用。这些组件所处的环境各不相同且是分布式的。因此,需要一个安全通信基础架构来确保这些组件之间的消息(和内容)的安全性。
Web 服务安全性(Web Services Security ,WS-Security 或 WSS) 十分灵活,可以将它设计成一个基础平台,可以在此平台上构建各种安全模型,包括公钥基础架构(PKI)、Kerberos 和安全套接字层(SSL)。非凡是,WS-Security 支持多种安全性令牌、多种信任域、多种签名格式以及多种加密技术。
这个规范提供了三种主要机制:
安全性令牌传播 消息完整性 消息机密性。
这些机制本身并不提供完整的安全性解决方案。相反,WS-Security 是一个构件,它可以与其他的 Web 服务扩展及更高层的特定于应用程序的协议一起使用,从而提供各种各样的安全性模型和加密技术。这些机制可以独立使用(例如,用于传递安全性令牌),也可以非常紧密地集成在一起(例如,签名和加密消息,以及提供与用于签名和加密的密钥相关联的安全性令牌层次)。
本文假定您具有一定的 Web 服务、J2EE 技术及 WebSphere® application Server V5.0.2 的基本知识。通过阅读本文,您将会理解如何在现有的基础架构上使用 WS-Security,同时也将了解一种声明性的编程模型,即 WebSphere Application Server V5.0.2 提供保护应用程序的通信基础架构。
WebSphere Application Server V5.0.2 中的 WS-Security WebSphere Application Server V5.0.2 通过一种声明性模型来使用 WS-Security。这种模型的创建和修改可以通过 WebSphere Studio Application Developer Version 5.1、WebSphere Application Server V5.0.2 中可用的应用服务器工具包(ASTK)或 WebSphere 治理控制台来完成。为了更深地理解这一技术,我们将在此描述一下手动过程。
可以传播的安全性令牌是 Username 令牌、基于 X.509 的证书以及轻量级第三方验证(LTPA);同时还有一个 API 来为用户定义的令牌提供插件。消息完整性是由基于 PKI 的数字签名提供的(目前还不支持对称密钥签名),而消息机密性是由 xml 加密法提供的。
图 1. WebSphere Application Server V5.0.2 中的 WS-Security
样本帐户服务 WebSphere Application Server V5.0.2 有一种方便而强大的方式来启用 WS-Security,从而为应用程序的通信链路提供 MLS。它可以让您获取现有的任何服务的 Web 服务描述语言(WSDL),并为您提供必要的 WS-Security 扩展和绑定来保护 Web 服务客户端和服务器之间的消息。
本文假定已经有了一个要应用 WS-Security 必须启用的 Web 服务。这里使用的示例服务是 AccountService,它是由一个假设的银行(SomeBank)提供的。