工作方式: 签署 SOAP 消息

将完整性应用于 SOAP 消息,以确保在消息传输期间任何人都不会非法修改该消息。 本质上,通过在 SOAP 消息的内容上生成 XML 数字签名来提供完整性。 如果消息数据非法更改,那么签名将不再有效。

稳定功能:

稳定了对 WS-Security 功能 SOAP 消息的签名和加密支持。 考虑使用传输层安全作为保护 SOAP 信息的替代方案。 另请参阅 " 稳定通知 "和 "停止的职能 "。

6.3CICS® TS 6.3 起,不再支持为 WS-Security 功能签署和加密 SOAP 消息。

6.16.2 稳定了对 WS-Security 功能 SOAP 消息的签名和加密支持。

生成数字签名涉及使用专用密钥对消息摘要进行加密,以创建手写签名的电子等效项。 您可以使用数字签名来验证签署者的身份,并确保自签署 SOAP 消息以来没有任何更改。

对于入站消息, CICS 支持 SOAP 主体中的元素和 SOAP 头块上的数字签名。 对于出站消息, CICS 对 SOAP 主体中的所有元素进行签名。

WS-Security 规范 允许在元素级别对 <Header><Body> 的内容进行签名。 即,在消息中,单个元素可以签名或不签名,也可以使用不同的签名或使用不同的算法进行签名。 例如,在在线采购应用程序中使用的 SOAP 消息中,对确认订单接收的元素进行签名是适当的,因为这些元素可能具有法律地位。 但是,为了避免对整个消息进行签名的开销,其他信息可能会安全地保持未签名状态。

对于入站消息, CICS 安全性消息处理程序可以验证 SOAP <Header><Body>中各个元素上的数字签名。 CICS 安全处理程序验证以下元素:
  • 它在 <Header> 中迂到的已签名元素
  • SOAP <Body>中的已签名元素。 如果将处理程序配置为需要已签名的主体,那么 CICS 将拒绝任何未对该主体进行签名的 SOAP 消息。

对于出站消息,安全性消息处理程序只能对 SOAP <Body> 进行签名; 它不会对 <Header>进行签名。 安全处理程序的配置信息指定用于对主体进行签名的算法和密钥。

要使用 CICS XML 数字签名,必须启动 z/OS® Integrated Cryptographic Service Facility (ICSF),并配置加密设备。 更多信息,请参阅 z/OS 综合加密服务设施 (ICSF)

注: XML 特征符的性能开销很大。

签名算法

CICS 支持 XML 签名规范所需的签名算法。 每个算法都由通用资源标识 (URI) 标识。
算法 URI
带有安全散列算法的数字签名算法 1 (带有 SHA1的 DSA) 仅在入站 SOAP 消息上受支持。 http://www.w3.org/2000/09/xmldsig#dsa-sha1
具有安全散列算法的 Rivest-Shamir-Adleman 算法 1 (具有 SHA1的 RSA) http://www.w3.org/2000/09/xmldsig#rsa-sha1

已签名 SOAP 消息的示例

此示例显示由 CICS签署的 SOAP 消息。
<?xml version="1.0" encoding="UTF8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
 <wsse:Security xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
                xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
                xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
                xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" SOAP-ENV:mustUnderstand="1">
 <wsse:BinarySecurityToken  1 
               EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" 
               ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509" 
               wsu:Id="x509cert00">MIIChDCCAe2gAwIBAgIBADANBgkqhkiG9w0BAQUFADAwMQswCQYDVQQGEwJHQjEMMAoGA1UEChMD
                                   SUJNMRMwEQYDVQQDEwpXaWxsIFlhdGVzMB4XDTA2MDEzMTAwMDAwMFoXDTA3MDEzMTIzNTk1OVow
                                   MDELMAkGA1UEBhMCR0IxDDAKBgNVBAoTA0lCTTETMBEGA1UEAxMKV2lsbCBZYXRlczCBnzANBgkq
                                   hkiG9w0BAQEFAAOBjQAwgYkCgYEArsRj/n+3RN75+jaxuOMBWSHvZCB0egv8qu2UwLWEeiogePsR
                                   6Ku4SuHbBwJtWNr0xBTAAS9lEa70yhVdppxOnJBOCiERg7S0HUdP7a8JXPFzA+BqV63JqRgJyxN6
                                   msfTAvEMR07LIXmZAte62nwcFrvCKNPCFIJ5mkaJ9v1p7jkCAwEAAaOBrTCBqjA/BglghkgBhvhC
                                   AQ0EMhMwR2VuZXJhdGVkIGJ5IHRoZSBTZWN1cml0eSBTZXJ2ZXIgZm9yIHovT1MgKFJBQ0YpMDgG
                                   ZQVRFU0BVSy5JQk0uQ09ggdJQk0uQ09NhgtXV1cuSUJNLkNPTYcECRRlBjAO
 </wsse:BinarySecurityToken>
 <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <ds:SignedInfo xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                 xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
                 xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
                 xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
   <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
    <c14n:InclusiveNamespaces xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ds wsu xenc SOAP-ENV "/>
   </ds:CanonicalizationMethod>
   <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
   <ds:Reference URI="#TheBody">
    <ds:Transforms>
     <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
       <c14n:InclusiveNamespaces xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="wsu SOAP-ENV "/>
     </ds:Transform>
    </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 2 
    <ds:DigestValue>QORZEA+gpafluShspHxhrjaFlXE=</ds:DigestValue> 3 
   </ds:Reference>
  </ds:SignedInfo>
  <ds:SignatureValue>drDH0XESiyN6YJm27mfK1ZMG4Q4IsZqQ9N9V6kEnw2lk7aM3if77XNFnyKS4deglbC3ga11kkaFJ 4 
                     p4jLOmYRqqycDPpqPm+UEu7mzfHRQGe7H0EnFqZpikNqZK5FF6fvYlv2JgTDPwrOSYXmhzwegUDT
                     lTVjOvuUgXYrFyaO3pw=</ds:SignatureValue>
   <ds:KeyInfo>
    <wsse:SecurityTokenReference>
      <wsse:Reference URI="#x509cert00" 
                      ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509"/> 5 
    </wsse:SecurityTokenReference>
   </ds:KeyInfo>
  </ds:Signature>
 </wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="TheBody">
 <getVersion xmlns="http://msgsec.wssecfvt.ws.ibm.com"/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
  • 1 二进制安全性令牌包含 X.509 证书的 base64binary 编码。 此编码包含 SOAP 消息的预期接收方用于验证签名的公用密钥。
  • 2 这是散列过程中用于生成消息摘要的算法。
  • 3 这是消息摘要的值。
  • 4 然后使用用户的专用密钥对摘要值进行加密,并将其作为签名值包含在此处。
  • 5 这将引用包含用于验证签名的公用密钥的二进制安全性令牌。