6.2. SOAP 消息保护

6.2.1. SOAP 消息保护简介

概述

通过在 SOAP 编码层而不是传输层应用消息保护,您可以访问更为灵活的保护策略。特别是,因为 SOAP 层知道消息结构,因此您可以在更精细的粒度级别应用保护,例如仅加密并签名那些实际需要保护的标头。此功能允许您支持更复杂的多层架构。例如,一个纯文本标头可能基于中间层(位于安全内部内部),而加密标头可能基于最终目的地(通过不安全的公共网络访问)。

安全绑定

如 WS-SecurityPolicy 规格中所述,以下绑定类型之一可以用来保护 SOAP 信息:

  • SP:TransportBinding- 传输绑定 是指传输级别提供的消息保护(例如,通过 HTTPS)。此绑定可用于保护任何消息类型,而不仅仅是 SOAP,在前面的部分 第 6.1 节 “传输层安全性” 中详细介绍。
  • SP:AsymmetricBinding- 非对称绑定 是指 SOAP 消息编码层提供的消息保护,其中保护功能使用非对称加密(也称为公钥加密)实施。
  • SP:SymmetricBinding- 对称绑定 是指 SOAP 消息编码层提供的消息保护,其中保护功能将使用对称加密实施。对称加密示例是由 WS-SecureConversation 和 Kerberos 令牌提供的令牌。

消息保护

以下保护数量可应用于部分或全部消息:

  • 加密.
  • 签名.
  • 签名+encryption(在加密前签名)。
  • encryption+signing(加密,在签名前)。

这些数量保护可以是在单个消息中任意组合的保护。因此,消息的某些部分只需加密,而消息的其他部分则只签名,消息的其他部分则也可被签名和加密。也可以将消息的部分保留为不受保护。

应用消息保护的最灵活选项可在 SOAP 层提供(sp:AsymmetricBindingsp:SymmetricBinding)。传输层(sp:TransportBinding)只为您提供 对整个 消息应用保护的选项。

指定要保护的消息的部分

目前,Apache CXF 允许您为 SOAP 消息的以下部分签名或加密:

  • body-sign 和/or 加密 SOAP 消息中的 soap:BODY 元素。
  • 标头 -sign 和/或加密一个或多个 SOAP 邮件标题。您可以单独指定每个标头的保护质量。
  • Attachments-sign 和/或加密 SOAP 消息中的所有附件。
  • 元素- 在 SOAP 消息中签名和/或加密特定 XML 元素。

配置角色

不是使用策略指定消息保护所需的所有详情。这些策略主要用于指定服务所需的质量保护。必须使用一个独立的产品特定机制提供支持(如安全令牌、密码等)的详情。实际上,这意味着在 Apache CXF 中,必须在 Blueprint XML 配置文件中提供一些支持配置详细信息。详情请查看 第 6.2.6 节 “提供加密密钥和签名密钥”