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:AsymmetricBinding
或 sp: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 节 “提供加密密钥和签名密钥”。