Web Service 消息级安全性的标准和编程模型概述
Web Service 安全性标准和概要文件描述了如何为 Web Service 环境中交换的 SOAP 消息提供安全和保护。
要保护 Web Service,您必须考虑各种安全要求,其中包括认证、授权、隐私、信任、完整性、机密性、安全通信信道、委派以及跨应用程序和业务拓扑结构的审计。在当今的业务环境中,安全模型的其中一个关键需求是能够在异构环境中先前不兼容的安全技术之间进行互操作。Web Service 世界中的安全性:建议的体系结构和路线图对完整的 Web Service 安全性协议堆栈和技术路线图进行了描述。
Web Service 安全性标准
结构化信息标准促进组织 (OASIS) Web Service 安全性(WS-Security) 规范定义了用于保护消息完整性和机密性的核心设施,并提供了使安全性的相关声明与消息相关联的机制。Web Service 安全性是消息级标准,它通过 XML 数字签名来保护 SOAP 消息、通过 XML 加密来实现机密性以及通过安全性令牌来传播凭证。WebSphere® Application Server 支持 Web Services 安全规范 V1.1,其中包括加密头、指纹和签名配置、用户名令牌概要文件和 X.509 令牌概要文件之类的功能。另外,还为 Kerberos V1.1 令牌概要文件、WS-SecureConversation V1.3、WS-Trust V1.3 和 WS-SecurityPolicy V1.2 提供了有限的安全性方案支持。
Web Service 安全性 SOAP 消息安全性 1.1 规范概述了可用于构建安全 Web Service 的一组标准的 SOAP 1.1 扩展。这些标准提供了完整性和机密性保护功能,这些功能通常借助数字签名和加密技术实现。另外,Web Service 安全性还提供了一个用于将安全性令牌与消息相关联的通用机制。安全性令牌的典型示例是用户名令牌,此令牌包含文本格式的用户名和密码。Web Service 安全性定义了如何使用 X.509 证书之类的方法对二进制安全性令牌进行编码。但是,在 SOAP 消息安全性 V1.1 规范中,未定义所需的安全性令牌。而是,在不同的概要文件(例如用户名令牌概要文件和 X.509 令牌概要文件等等)中定义这些令牌。
虽然 Web Service 安全性可用于为客户机到服务的正常 SOAP 消息请求以及服务到客户机的正常 SOAP 消息响应提供消息级完整性和机密性保护,但 Web Service 安全性不可用于保护 SOAP 故障消息,注意这一点至关重要。
WS-Security Draft 13 与 WS-Security 标准 V1.0 和 V1.1 之间的兼容性
在过去的若干年中,WS-Security 标准已由草稿发展为 OASIS 标准。WebSphere Application Server V5.02 引入了对 WS-Security Draft 13 的支持,并且,对 WS-Security 1.0 的支持由 WebSphere Application Server V6.0 开始引入。WS-Security V1.1 受 WebSphere Application Server V6.1 Feature Pack for Web Services 支持(仅使用 JAX-WS 运行时)。主题 Web Services 安全规范 - 年表提供了有关此支持发展过程的更多详细信息。
WS-Security Draft 13 客户机与使用 WS-Security V1.0 或 V1.1 的提供程序不兼容,注意这一点至关重要。必须使用 Draft 13 客户机与 Draft 13 Web Service 提供程序进行通信。不能使用 Draft 13 客户机与 WS-Security V1.0 提供程序或 V1.1 提供程序进行通信。 引起此问题的原因是,在启用了 WS-Security Draft 13 的应用程序与启用了 WS-Security V1.0 或 V1.1 的应用程序 之间,WS-Security 头和名称空间的 SOAP 消息格式不相同。
- Java EE V1.3 只能与 WS-Security Draft 13 配合使用。
- Java EE V1.4 和更高版本能够与 WS-Security V1.0(JAX-RPC 和 JAX-WS)以及 WS-Security V1.1 (JAX-WS) 配合使用。
下图对这些兼容性注意事项作了说明:
要通过 WebSphere Application Server 来保护 Web Service,您必须指定多个不同的配置。尽管没有必须指定这些不同配置的特定顺序,一些配置仍参考其他配置。请参阅Web Service 安全性配置注意事项。
由于不同的 Web Service 安全性配置之间的关系,建议您按下列各节中描述的顺序在各个配置级别指定这些配置。可以选择为应用程序级别、服务器级别或单元级别配置 Web Service 安全性,这取决于环境和安全需要。
Web Service 安全性编程模型
使用易于实现的 Java™ API for XML-Based Web Services (JAX-WS) 编程模型来开发新的 Web Service 应用程序和客户机。JAX-WS 是下一代 Web Service 编程模型。使用 JAX-WS,可简化 Web Service 和客户机的开发,并通过使用动态代理和 Java 注释使 Java 应用程序更加独立于平台。JAX-WS 支持使用标准的基于注释的模型来开发 Web Service 应用程序和客户机,从而简化了应用程序的开发。可以通过两种方式中的其中一种使用 Web Service 安全性来保护 JAX-WS 应用程序。可以使用策略集或通过使用 Web Service 安全性 API (WSS API) 来保护应用程序。要使用 Java API for XML-Based Web Services (JAX-WS) 编程模型来保护 Web Service,请从使用消息级别安全性来保护 JAX-WS Web Service主题入手。
Java™ API for XML-based RPC (JAX-RPC) 规范使您能够开发基于 SOAP 的可互操作并且可移植的 Web Service 和 Web Service 客户机。JAX-RPC 1.1 提供了用于在 Java 平台上开发和部署 Web Service 的核心 API,并且它是 Java Platform Enterprise Edition (Java EE) 平台的 Web Service 的部件。IBM® WebSphere® Application Server 支持 JAX-WS 编程模型和 JAX-RPC 编程模型。JAX-WS 是下一代 Web Service 编程模型,用于扩展 JAX-RPC 编程模型所提供的基础。要使用 Java API for XML-based RPC (JAX-RPC) 编程模型来保护 Web Service,请从主题使用消息级别安全性来保护 JAX-RPC Web Service入手。