美文网首页
第二十章 加密 SOAP 主体

第二十章 加密 SOAP 主体

作者: Cache技术分享 | 来源:发表于2024-09-08 09:13 被阅读0次

    第二十章 加密 SOAP 主体

    本主题介绍如何加密 IRIS Web 服务和 Web 客户端发送的 SOAP 消息正文。

    主题“加密安全标头元素”和“使用派生密钥令牌进行加密和签名”描述了如何加密安全标头元素以及加密 SOAP 主体的其他方法。

    加密概述

    IRISSOAP 消息加密的支持基于 WS-Security 1.1。反过来,WS-Security 遵循 XML 加密规范。根据后者规范,要加密 XML 文档:

    1. 生成一个对称密钥以供临时使用。
    2. 可以使用它来加密文档(或文档的选定部分)。

    使用包含内容加密版本的 <EncryptedData> 元素替换文档的这些部分。

    1. 使用要向其发送文档的实体的公钥加密对称密钥。

    可以从该实体的请求消息中包含的 X.509 证书中获取公钥。或者可以提前获取它。

    1. 在同一文档中的 <EncryptedKey> 元素中包含加密的对称密钥。 <EncryptedKey> 元素直接或间接地提供信息,使接收者能够确定用于解密此元素的密钥。

    此信息可以包含在 <EncryptedKey> 元素中,或者 <EncryptedKey> 元素可以包含对包含 X.509 证书或签名的 SAML 断言的二进制安全令牌的直接引用。在后一种情况下,必须在添加 <Signature>元素之前将安全令牌添加到消息中。

    文档可以包含多个<EncryptedKey> 元素,适用于文档的不同加密部分。

    其他主题介绍了加密 SOAP 消息部分内容的其他方法。消息本身的细节各不相同,但一般过程相同,并遵循 XML 加密规范:生成并使用对称密钥,加密对称密钥,并将加密的对称密钥包含在消息中。

    加密 SOAP 主体

    要加密 SOAP 消息的正文,可以使用此处的基本过程或小节中描述的变体。首先,下图总结了该过程:

    [图片上传失败...(image-be51d5-1725844374327)]

    具体过程如下:

    1. 可选择包含 %soap.inc 包含文件,它定义了可能需要使用的宏。
    2. 获取包含将接收 SOAP 消息的实体的公钥的凭证集,通常来自收到的入站消息。请参阅以编程方式检索凭证集。

    例如:

     set credset=..SecurityIn.Signature.X509Credentials
    

    请务必检查返回对象的类型,看它是否是 %SYS.X509Credential的实例,如以编程方式检索凭据集中所述。

    1. 创建包含与该凭证集关联的证书的二进制安全令牌。为此,请调用 %SOAP.Security.BinarySecurityTokenCreateX509Token() 类方法。例如:
     set bst=##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)
    

    此方法返回代表 <BinarySecurityToken>标头元素的 %SOAP.Security.BinarySecurityToken实例。

    1. 将此令牌添加到 WS-Security 标头元素。为此,请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于方法参数,请使用您刚刚创建的令牌。例如:
     do ..SecurityOut.AddSecurityElement(bst)
    
    1. 根据二进制安全令牌创建加密密钥。为此,请调用 %XML.Security.EncryptedKey的 CreateX509() 类方法。例如:
     set enckey=##class(%XML.Security.EncryptedKey).CreateX509(bst)
    

    此方法生成一个对称密钥,使用它来加密 SOAP 主体,并返回 %XML.Security.EncryptedKey 的实例,该实例表示 <EncryptedKey> 标头元素。此标头元素包含对称密钥,由给定二进制安全令牌中包含的公钥加密。

    1. 可选择修改加密密钥实例以使用不同的算法。请参阅指定块加密算法和指定密钥传输算法。
    2. <EncryptedKey> 元素添加到 WS-Security 标头元素。为此,请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于要添加的元素,请指定 %XML.Security.EncryptedKey 的实例。

    例如:

     do ..SecurityOut.AddSecurityElement(enckey)
    

    此步骤还添加 <EncryptedData> 元素作为 <Body> 元素的子元素。

    1. 发送 SOAP 消息。SOAP 主体已加密,并包含 WS-Security 标头。

    WS-Security 标头包括<BinarySecurityToken> and <EncryptedKey> 元素。

    相关文章

      网友评论

          本文标题:第二十章 加密 SOAP 主体

          本文链接:https://www.haomeiwen.com/subject/xxisljtx.html