通过在消息级别使用 WSS API 来保护 Web Service 应用程序
标准和概要文件描述如何为 Web Service 环境中交换的消息提供保护。Web Service 安全性是一个消息层标准,它基于通过 XML 数字签名的安全 SOAP 消息、通过 XML 加密的机密性和通过安全性令牌的凭证传播。
开始之前
要保护 Web Service,您必须考虑各种安全要求,其中包括认证、授权、隐私、信任、完整性、机密性、安全通信信道、委派以及跨应用程序和业务拓扑结构的审计。在当今的业务环境中,安全模型的其中一个关键需求是能够在不同种类的环境中先前不兼容的安全技术之间进行互操作。在 Web Service 指南中描述了完整的 Web Service 安全性协议堆栈和技术指南。
关于此任务
结构化信息标准促进组织 (OASIS) Web Service 安全性:SOAP 消息安全性 V1.1 规范是所有 Web Service 的基本消息传递传输方法。SOAP 1.2 对现有 SOAP 1.1 扩展进行了扩展,以便您可以构建安全 Web Service。通过使用消息传输优化机制 (MTOM) 和基于 XML 二进制优化打包 (XOP) 取代带附件的 SOAP (SWA) 概要文件对 SOAP 消息添加附件。
OASIS Web Service 安全性 (WS-Security) V1.1 规范是构建块,与其他 Web Service 和特定于应用程序的协议配合使用,以适应各种安全模型。WebSphere® Application Server 的 Web Service 安全性基于在 OASIS Web Service 安全性 V1.1 规范和概要文件中包含的特定标准。
V1.1 规范定义其他用于保护消息的完整性和机密性的工具。V1.1 规范还提供用于将安全性相关的声明与其他消息相关联的机制。WebSphere Application Server 支持的 Web Service 安全性 V1.1 标准包含签名确认、加密的头元素、用户名令牌概要文件和 X.509 令牌概要文件。用户名令牌概要文件和 X.509 令牌概要文件已更新为 V1.1 概要文件。对于 X.509 证书令牌概要文件,一种新的安全性令牌引用类型是在绑定中指定的指纹引用。
XML 模式第 1 部分和第 2 部分是说明模式在 XML 文档中的组织方式的规范。这两个 WS-Security V1.0 模式已更新为 V1.1 规范,另外还添加了新的 V1.1 模式。注意,V1.1 模式未替换 V1.0 模式,而是通过在 V1.1 名称空间中定义一组附加功能来构建该模式。
- 使用管理控制台来配置策略集。
此方法使用在此策略集中定义的引导策略。可以使用策略集(即,有关如何定义服务的声明)来简化 Web Service 的安全性配置。可以使用管理控制台来创建、修改和删除定制策略集。提供一组缺省策略集。
例如,您可以在策略集中定义引导策略以保护 Web Service 信任 (WS-Trust) SOAP 消息。
另外,还可以使用管理控制台来执行策略集管理任务以及通过加密、签名信息和安全性令牌来保护 Web Service。
以下高级步骤描述如何将 WebSphere Application Server 配置为使用 WS-Security 以及如何通过使用管理控制台来保护 SOAP 消息。在以下步骤中介绍的生成者和使用者任务使用的是 WS-Security V1.0 和 V1.1。- 为信任服务创建并配置应用程序策略集或系统策略集。
- 创建并配置策略集时定义要用于保护 SOAP 消息的策略类型。
- 配置策略集绑定。选择对称或非对称绑定声明以描述要用于消息保护的令牌类型和算法。
- 通过使用组装工具来组装启用了 Web Service 安全性的应用程序。
- 使用 Web Service 安全性 API (WSS API) 来配置 SOAP 消息上下文(仅适用于客户机)
WebSphere Application Server 使用新的 API 编程模型。除了现有的 JAX-RPC 编程模型,还添加了新的编程模型 Java™ API for XML Web Services (JAX-WS)。JAX-WS 编程标准与以文档为中心的消息传递模型组合在一起,取代了使用 Java API for XML-based RPC (JAX-RPC) 规范定义的远程过程调用编程模型。
例如,应用程序可以创建系统策略集,然后使用 WebSphere Application Server WSS API 来获取基于程序化 API 的 Web Service 安全对话 (WS-SecureConversation) 的安全上下文令牌。
另外,还可以使用管理控制台来执行 WSS API 在保护 Web Service 时所执行的加密、签署和令牌配置任务。
以下高级步骤描述如何配置 WebSphere Application Server 以使用 WS-Security 以及如何使用 WSS API 来保护 SOAP 消息。在以下步骤中介绍的生成者和使用者任务使用的是 WS-Security V1.0 和 V1.1。
- 使用 WSSSignature API 来配置请求生成者(客户机端)绑定的签名信息。
可以在生成者端上请求的消息保护中指定不同的消息部件。缺省必需部件是 BODY、ADDRESSING_HEADERS 和 TIMESTAMP。
另外,WSSSignature API 还指定不同的算法方法,以用于签名,从而实现消息保护。缺省签名方法是 RSA_SHA1。缺省规范方法是 EXC_C14N。
- 如果要更改摘要方法和变换方法,请使用 WSSSignPart API。
缺省签署部件是 WSSSignature.BODY、WSSSignature.ADDRESSING_HEADERS 和 WSSSignature.TIMESTAMP。
如果您添加或更改了签署部件,那么 WSSSignPart API 还指定不同的算法方法供使用。缺省摘要方法是 SHA1。缺省变换方法是 TRANSFORM_EXC_C14N。例如,如果要使用 SHA256 摘要方法取代 SHA1 的缺省值来生成 SOAP 消息的签名,请使用 WSSSignPart API。
- 使用 WSSEncryption API 来配置请求生成者端的加密信息。
生成者端的加密信息用于对请求生成者(客户机端)绑定的出局 SOAP 消息进行加密。加密的缺省目标是 BODY_CONTENT 和 SIGNATURE。
另外,WSSEncryption API 还指定不同的算法方法以用于保护消息机密性。缺省数据加密方法是 AES128。缺省密钥加密方法是 KW_RSA_OAEP。
- 如果只需设置变换方法,请使用 WSSEncryptPart API。
例如,如果要将数据加密方法从 AES128 的缺省值更改为 TRIPLE_DES。
加密部件不需要任何算法方法。
- 使用 WSS API 来配置生成者端的令牌。
安全性令牌的需求取决于令牌类型。JAAS 登录模块和 JAAS CallbackHandler 负责在生成者端创建安全性令牌。在请求和响应中发送不同的独立令牌。缺省令牌是 X509Token。可用于签署的其他令牌是 DerivedKeyToken,它仅与 Web Service 安全对话 (WS-SecureConversation) 配合使用。
- 使用 WSSVerification API 来验证响应使用者(客户机端)绑定的签名。
可以在使用者端上响应的消息保护中指定不同的消息部件。要进行验证的必需目标是 BODY、ADDRESSING_HEADERS 和 TIMESTAMP。
另外,WSSVerification API 还指定不同的算法方法,以用于验证签名和用于消息保护。缺省签名方法是 RSA_SHA1。缺省规范方法是 EXC_C14N。
- 使用 WSSVerifyPart API 来更改摘要方法和变换方法。必需验证部件是 WSSVerification.BODY、WSSVerification.ADDRESSING_HEADERS 和 WSSVerification.TIMESTAMP。
如果您添加或更改了验证部件,那么 WSSVerifyPart API 还指定不同的算法方法供使用。缺省摘要方法是 SHA1。缺省变换方法是 TRANSFORM_EXC_C14N。
- 使用 WSSDecryption API 来配置响应使用者(客户机端)绑定的解密信息。
使用者端的解密信息用于对入局 SOAP 消息进行解密。解密的目标是 BODY_CONTENT 和 SIGNATURE。缺省密钥加密方法是 KW_RSA_OAEP。
解密不需要任何算法方法。
- 如果只需设置变换方法,请使用 WSSDecryptPart API。
例如,如果要将数据加密方法从 AES128 的缺省值更改为 TRIPLE_DES。
解密部件不需要任何算法方法。
- 使用 WSS API 来配置使用者端的令牌。
安全性令牌的需求取决于令牌类型。JAAS 登录模块和 JAAS CallbackHandler 负责验证(认证)使用者端的安全性令牌。在请求或响应中发送不同的独立令牌。
WSS API 添加候选令牌的信息以用于解密。缺省令牌是 X509Token。
- 使用 WSSSignature API 来配置请求生成者(客户机端)绑定的签名信息。
- 使用 wsadmin 脚本编制工具来配置策略集。
此方法允许您从命令行创建、管理和删除策略集或者创建脚本以便对任务进行自动化。可以使用 wsadmin 工具和 PolicySetManagement 命令组来管理缺省策略集、创建定制策略集、配置策略以及管理附件和绑定。有关更多信息,请使用信息中心中的策略集脚本编制主题。
要使用 WebSphere Application Server 保护 Web Service,您必须配置生成者和使用者安全性约束。必须指定若干种不同的配置。虽然不需要根据特定顺序来指定这些不同的配置,但某些配置仍引用其他配置。例如,解密配置引用加密配置。
结果
对 WebSphere Application Server 完成这些高级步骤后,通过配置策略集和通过使用 WSS API 来配置加密和解密、签名和签名验证信息以及使用者和生成者令牌来实现对 Web Service 的保护。