签名确认
Web Service 安全性签名确认是一种增强型 XML 数字签名,它包括在 Web Service 安全性标准中。XML 数字签名用于签署 SOAP 包络的元素。
作为 OASIS SOAP 消息安全性规范的扩展之一,签名确认元素合并响应消息中所需的元素以确认请求消息中包含的签名。XML 数字签名和签名确认有助于提供更安全的消息级安全性。
用于 SOAP 消息安全性的 Web Service 安全性 V1.0 未提供有关如何确认互相了解引起此响应的请求的任何指导。已经将 SignatureConfirmation 或 <wsse11:SignatureConfirmation> 元素添加到 Web Service 安全性 V1.1 规范中。 <wsse11:SignatureConfirmation> 元素确保由预期的接收方处理签名,并显示响应程序已经处理请求中的签名。签名确认元素是已更新的 Web Service 安全性标准中的部分,和其他支持 V1.1 标准的供应商(例如 Microsoft .NET 和 DataPower®)之间存在互操作性。
- 如果运行在 WebSphere® Application Server 上的客户机启用了集群,那么假设以启用会话亲缘关系。若启用了会话亲缘关系,就暗示会将响应发送回服务器的发起客户机。
- 假设对异步消息传递交换模式启用了 WS-Addressing。当启用 WS-Addressing 时,它允许运行时关联响应到请求。将异步响应发送回初始 WebSphere Application Server 的应用程序。
语法
SignatureConfirmation 元素指示响应方已处理请求中的签名。若响应中不存在此元素,那么发起方解释为响应方不符合要求。
签名确认元素的格式如下所示:
<wsse11:SignatureConfirmation wsu:Id="…" Value="…" />
- wsu:Id
- 在关联的响应消息签名的 <ds:SignedInfo> 引用列表中引用此元素时使用的标识。此属性必需,这样才能做出 <wsse11:SignatureConfirmation> 元素的明确引用。
- 值
- 此属性可选,并包含从相关请求复制的 <ds:SignatureValue> 内容。如果该请求未签署,那么此属性一定不会存在。如果不带值(空的)指定此属性,那么发起方将此解释为不正确行为并进行相应处理。若此属性不存在,那么发起方将此解释为表示响应基于未签署的请求。
配置
要配置签名确认,使用管理控制台配置策略文件,然后选择需要签名确认。要正确地处理签名确认,请求的发起方需要在请求生成者处理期间保留签名,稍后需要检索签名以进行确认检查。
响应生成规则
SOAP 响应方的其他 SOAP 安全性元素用于确认响应与特定请求相关。响应程序必需包含请求签名的 <ds:SignatureValue> 元素,作为 <wsse11:SignatureConfirmation> 元素的 @Value 属性值。
- 如果请求上没有签名,那么响应包含一个 SignatureConfirmation 元素,没有值。对于 存在多个请求(所有请求都没有签名)和一个响应的 MEP,响应包含一个 SignatureConfirmation 元素,没有值。
- 如果请求上存在签名,那么响应包含每个签名的 SignatureConfirmation 元素,带有与请求上的签名值相匹配的值。对于存在多个请求(至少有一个请求包含签名)和一个响应的 MEP,响应包含在请求上找到的每个签名的 SignatureConfirmation 元素,并具有与请求上的签名值相匹配的值。
- 对于存在一个请求和多个响应的 MEP,每个响应包含相应的 SignatureConfirmation 元素,如在第一项和第三项中所说那样。
- 如果 SOAP 请求包含多个签名,请求者将可找到包含在响应中所有签名信息元素,并将对原始 SOAP 请求中各签名的值检查签名确认元素的值字段中的值。