美文网首页收藏
第二十七章 添加数字签名 - 变体:使用签名的 SAML 断言

第二十七章 添加数字签名 - 变体:使用签名的 SAML 断言

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

    第二十七章 添加数字签名 - 变体:使用签名的 SAML 断言

    要添加在签名的 SAML 断言中使用证书的数字签名,请执行以下操作:

    1. 可选择包含 %soap.inc 包含文件,它定义了可能需要使用的宏。
    2. 如果要对任何安全标头元素进行签名,请创建这些安全标头元素。例如:
     set utoken=##class(%SOAP.Security.UsernameToken).Create("_SYSTEM","SYS")
    
    1. 使用 Holder-of-key 方法的<SubjectConfirmation> 元素创建签名的 SAML 断言。请参阅创建和添加 SAML 令牌。
    2. 创建 <Signature> 元素。创建时,使用已签名的 SAML 断言作为 CreateX509() 类方法的第一个参数。例如:
     set signature=##class(%XML.Security.EncryptedKey).CreateX509(signedassertion)
    
    1. 将数字签名添加到 WS-Security 标头元素。为此,请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于参数,请指定上一步中创建的签名对象。例如:
     do ..SecurityOut.AddSecurityElement(dsig)
    
    1. 发送 SOAP 消息。请参阅添加安全标头元素中的一般注释。

    将数字签名应用于特定消息部分

    默认情况下,当创建数字签名并将其添加到 WS-Security 标头元素时,该签名将应用于 SOAP 主体、标头中的 <Timestamp> 元素(如果存在)以及任何 WS-Addressing 标头元素。

    要指定签名适用的部分,请使用前面描述的任一过程,但有一个变体:创建签名时,使用第二个参数 (signatureOptions) 指定要签名的消息部分。将此参数指定为以下任何宏的二进制组合(包含在 %soap.inc 文件中):

    • $$$SOAPWSIncludeNone

    $$$SOAPWSIncludeDefault (which equals $$$SOAPWSIncludeSoapBody + $$$SOAPWSIncludeTimestamp + $$$SOAPWSIncludeAddressing)

    • $$$SOAPWSIncludeSoapBody

    • $$$SOAPWSIncludeTimestamp

    • $$$SOAPWSIncludeAddressing

    • $$$SOAPWSIncludeAction

    • $$$SOAPWSIncludeFaultTo

    • $$$SOAPWSIncludeFrom

    • $$$SOAPWSIncludeMessageId

    • $$$SOAPWSIncludeRelatesTo

    • $$$SOAPWSIncludeReplyTo

    • $$$SOAPWSIncludeTo

    • $$$SOAPWSIncludeRMHeaders

    要组合宏,请使用加号 (+) 和减号 (-)。例如:

    $$$SOAPWSIncludeSoapBody+$$$SOAPWSIncludeTimestamp
    

    注意:这些选项既适用于 CreateX509() 也适用于 Create() 方法;后者在使用派生密钥令牌进行加密和签名中进行了讨论。

     set ts=##class(%SOAP.Security.Timestamp).Create()
     do ..SecurityOut.AddSecurityElement(ts)
     set x509alias = "servercred" 
     set cred = ##class(%SYS.X509Credentials).GetByAlias(x509alias)
     
     set parts=$$$SOAPWSIncludeSoapBody + $$$SOAPWSIncludeTimestamp
     set signature=##class(%XML.Security.Signature).CreateX509(cred,parts)
    

    相关文章

      网友评论

        本文标题:第二十七章 添加数字签名 - 变体:使用签名的 SAML 断言

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