个人商城网站建设,mvc 网站模板,frame wordpress,合肥快速建站模板文章目录 第二十五章 添加数字签名数字签名概述添加数字签名 第二十五章 添加数字签名
本主题介绍如何向 IRIS Web 服务和 Web 客户端发送的 SOAP 消息添加数字签名。
通常#xff0c;会同时执行加密和签名。为简单起见#xff0c;本主题仅介绍签名。有关结合加密和签名的信… 文章目录 第二十五章 添加数字签名数字签名概述添加数字签名 第二十五章 添加数字签名
本主题介绍如何向 IRIS Web 服务和 Web 客户端发送的 SOAP 消息添加数字签名。
通常会同时执行加密和签名。为简单起见本主题仅介绍签名。有关结合加密和签名的信息请参阅主题结合加密和签名。
主题使用派生密钥令牌进行加密和签名描述了向 SOAP 消息添加数字签名的另一种方法。
数字签名概述
可以使用数字签名来检测消息是否被篡改或者简单地验证消息的某一部分是否确实由所列实体生成。与传统的手工签名一样数字签名是对文档的附加只有文档的创建者才能创建并且不容易伪造。
IRIS 对 SOAP 消息的数字签名的支持基于 WS-Security 1.1。反过来WS-Security 遵循 XML 签名规范。根据后者的规范要对 XML 文档进行签名
使用摘要函数来计算文档一个或多个部分的哈希值。将摘要值连接起来。使用私钥加密串联摘要。这是只有才能执行的计算。创建 Signature 元素其中包含以下信息
对已签名部分的引用以表明该签名适用于消息的哪些部分。加密的摘要值。使接收者能够识别用于解密加密摘要值的公钥的信息。
此信息可以包含在Signature元素中或者 Signature 元素可以包含对包含 X.509 证书或签名的 SAML 断言的二进制安全令牌的直接引用。在后一种情况下必须在添加 Signature元素之前将安全令牌添加到消息中。
此信息还可以让收件人验证您是公钥/私钥对的所有者。
使用派生密钥令牌进行加密和签名主题介绍了一种向 SOAP 消息添加数字签名的替代方法。消息本身的细节各不相同但一般过程是相同的并遵循 XML 签名规范生成签名部分的摘要加密摘要并包含一个 Signature 元素其中包含使收件人能够验证签名和解密加密摘要的信息。
添加数字签名
要对 SOAP 消息进行数字签名可以使用此处的基本过程或本主题后续部分中描述的变体。
首先下图概括了这个过程 具体过程如下
可选择包含 %soap.inc 包含文件它定义了可能需要使用的宏。如果要对任何安全标头元素进行签名请创建这些安全标头元素。例如 set utoken##class(%SOAP.Security.UsernameToken).Create(_SYSTEM,SYS)创建 %SYS.X509Credentials 实例如以编程方式检索凭证集中所述。此 IRIS 凭证集必须包含自己的证书并且必须提供私钥密码如果尚未加载。例如 Set x509alias servercred Set pwd mypassword Set credset ##class(%SYS.X509Credentials).GetByAlias(x509alias,mypassword)创建包含与该凭证集关联的证书的二进制安全令牌。为此调用 %SOAP.Security.BinarySecurityTokenO 的 CreateX509Token() 类方法。例如 set bst##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)此方法返回代表 BinarySecurityToken 标头元素的 %SOAP.Security.BinarySecurityToken实例。
将此令牌添加到 WS-Security 标头元素。为此请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于方法参数请使用刚刚创建的令牌。例如 do ..SecurityOut.AddSecurityElement(bst)根据二进制安全令牌创建 Signature 元素。为此调用 %XML.Security.Signature的 CreateX509() 类方法。例如 set dsig##class(%XML.Security.Signature).CreateX509(bst)此方法返回 %XML.Security.Signature 的实例该实例表示 Signature标头元素。Signature 元素适用于消息的一组默认部分可以指定一组不同的部分。
正式地该方法具有以下签名
classmethod CreateX509(credentials As %SYS.X509Credentials , signatureOptions As %Integer, referenceOption As %Integer, Output status As %Status) as %XML.Security.Signaturecredentials - 凭据要么是实例中的 %SYS.X509Credentials要么是实例中的 %SAML.Assertion要么是实例中的 %SOAP.Security.BinarySecurityToken。signatureOptions 指定要签名的部分。此选项在将数字签名应用于特定消息部分中进行了描述。referenceOption 指定要创建的引用类型。有关详细信息请参阅 X.509 凭证的引用选项。status 表示该方法是否成功。
将数字签名添加到 WS-Security 标头元素。为此请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于参数请指定上一步中创建的签名对象。例如 do ..SecurityOut.AddSecurityElement(dsig)发送 SOAP 消息。请参阅添加安全标头元素中的一般注释。