Web Service 安全性提供消息完整性、机密性和认证
OASIS Web Service 安全性 (WS-Security) 是一种灵活的标准,用来在多个安全模型中的消息级别保护 Web Service。可以通过 XML 数字签名保护 SOAP 消息,通过 XML 加密保护机密性,以及通过安全性令牌保护凭证传播。
此 WS-Security 规范定义了保护消息的完整性和机密性的核心工具,并提供了将安全相关的声明与消息相关联的机制。消息级安全性或在消息级别保护 Web Service 可满足与传统 Web 安全性相同的安全性要求。这些安全性要求包括:标识、认证、权限、完整性、机密性、不可抵赖性和基本消息交换等。传统的 Web 和消息级安全性共享用于处理安全性的许多相同机制,包括数字证书、加密和数字签名。当 HTTPS 和安全套接字层 (SSL) 传输级别技术可以用于确保 Web Service 安全性时,可以更加有效地通过消息级安全性查找某些安全性方案。
传统的 Web 安全性机制(例如 HTTPS)可能不足以管理所有 Web Service 方案的安全性要求。 例如,当应用程序使用 HTTPS 发送带 JAX-RPC 的文档时,仅对 HTTPS 连接保护消息,这意味着在服务请求者(客户机)与服务之间传输文档期间提供保护。然而,应用程序可能要求除了保护 HTTPS 之外,或者甚至传输层之外,还要保护文档数据。通过在消息级别保护 Web Service,消息级安全性就能够满足这些延伸要求。
消息级安全性适用于以 SOAP 消息形式发送的 XML 文档。消息级安全性通过在消息的 SOAP 头中嵌入所有必需的安全性信息来使消息本身成为安全性部件。另外,消息级安全性可将安全性机制(例如加密和数字签名)应用于消息本身中的数据。
借助于消息级安全性,SOAP 消息本身包含保护消息所需的信息,或者包含有关在何处获取处理安全性所需信息的信息。SOAP 消息还包含用于处理指定消息级安全性的协议和过程相关的信息。然而,消息级安全性不与任何特定传输机制相关。因为安全性信息是消息的一部分,所以它独立于传输协议(例如 HTTPS)。
客户机将适用于特定消息的安全性信息添加至该 SOAP 消息头。接收到消息后,Web Service 端点使用头中的安全性信息验证该受保护消息,并针对策略对消息进行验证。例如,服务端点可验证消息签名并检查消息是否被篡改过。可以将签名和加密信息添加至 SOAP 消息头,也可以添加其他信息(例如绑定到 SOAP 消息内容的标识(例如 X.509 证书)的安全性令牌)。
对于 WebSphere® Application Server V6 和更高版本,可将 Web Service 安全性作为传输级安全性和消息级安全性应用。使用这些安全性机制,您可以架构高度安全的客户机和服务器设计。传输级安全性是指使用安全套接字层 (SSL) 保护客户机应用程序和 Web Service 之间连接的安全。
可以按照每个 Web Service 应用程序的特征来应用各种 Web Service 安全性方案。使用 Web Service 安全性时,您可以选择保护信息的方式。可以在消息级别和传输级别上应用认证机制、完整性和机密性。应用消息级安全性时,可以使用安全性令牌、数字签名和加密来保护 SOAP 消息。
如果不使用 Web Service 安全性,那么以明文发送 SOAP 消息,而且个人信息(例如用户标识或帐号)不受保护。如果没有应用 Web Service 安全性,那么 SOAP 消息中的 SOAP 包络下只包含 SOAP 主体。通过应用 WS-Security 规范功能,SOAP 安全性头被插入到 SOAP 消息中 SOAP 包络下,此时对 SOAP 主体签名和加密。
- 机密性指定应用于已生成的消息的机密性约束。这包括指定生成的消息内的哪些消息部件必须要加密,以及哪些消息部件需要附加经过加密的现时标志和时间戳记元素。
- 完整性通过将数字签名应用于 SOAP 消息来提供。机密性由 SOAP 消息加密应用。支持多个签名和加密。此外,可以将签署和加密同时应用于同一部件(如 SOAP 正文)。
通过插入不同类型的安全性令牌,例如用户名令牌(<UsernameToken> 元素),您可以添加认证机制。Web Service 服务器接收到用户名令牌时,将抽取并验证用户名和密码。仅当用户名和密码组合有效时,该服务器才会接受并处理消息。使用用户名令牌只是实现认证的其中一种方法。此机制也称为基本认证。
除了数字签名、加密和基本认证外,其他格式的认证包括身份断言、LTPA 令牌、Kerberos 令牌和定制令牌。这些另外的认证格式也是 WebSphere Application Server 扩展。您可以使用组装工具配置这些认证机制,实现认证。
借助 V1.1 规范中对 Web Service 安全性的更新,可以对这些基本机制及其他功能进行分层。某些 V1.1 机制是 WebSphere Application Server 扩展,例如签名确认和加密头。WebSphere Application Server 支持的安全性令牌概要文包括用户名令牌概要文件、X.509 令牌概要文件和 Kerberos 概要文件。在这种情况下,接收到消息后,Web Service 端点使用头中的安全性信息将相应的安全性机制应用于该消息。例如,服务端点可将签名和加密信息添加至 SOAP 消息头,还可以添加其他信息(例如绑定到 SOAP 消息内容的安全性令牌)。可通过使用策略集来实现这些新机制。
WebSphere Application Server V6.1(包含 FeaturePack for Web Services)中介绍了 WS-SecureConversation。安全对话使用会话密钥更加有效地保护 SOAP 消息,特别是在会话中传送多个 SOAP 消息时。
- Kerberos 令牌,用于认证和后续消息保护。
- 动态策略,允许客户机通过 WSDL 请求检索提供程序策略,或使用 Web Services MetadataExhange (WS-MEX) 简化 Web Service 客户机部署。