美文网首页收藏
第二十七章 添加数字签名 - 变体:使用签名的 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国标1

    1. SAML断言 断言是一个包含零个或更多个由SAML权威做出的声明的信息包。 SAML断言通常与由 元素表示的...

  • rpm包添加数字签名

    问题: 更新前未用数字签名验证更新文件的合法性。 思路: rpm包添加数字签名,在安装更新前使用公钥进行校验 步骤...

  • 21_数字签名、证书

    数字签名的概念 数字签名的概念 数字签名其实就是将公钥密码反过来使用,由消息的发送者通过“私钥”生成签名,由消息的...

  • 数字签名

    一、了解数字签名 数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了加密领域的技...

  • 应用签名--数字签名?代码签名?双层代码签名?

    数字签名 数字签名(又称公钥数字签名、电子签章等)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术...

  • PDF编辑方法,PDF如何去除数字签名

    有些人会在PDF文件中添加数字签名,但当PDF文件有数字签名的时候就无法对PDF文件进行编辑、添加等操作。这个时候...

  • 3、数字签名(ECDSA)

    比特币中使用的数字签名算法是椭圆曲线数字签名算法(Elliptic Curve Digital Signature...

  • 什么是SAML

    SAML 介绍 SAML即安全断言标记语言,英文全称是Security Assertion Markup Lang...

  • 比特币-签名

    数字签名(又称公钥数字签名,英语:Digital Signature)是一种类似写在纸上的普通的物理签名,但是使用...

  • 数字签名,数字证书和HTTPS

    数字签名 数字签名的目的是保证收件人能够确定此信件的来源正确并且未被篡改过。 数字签名的流程如下: 首先发件人使用...

网友评论

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

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