第十章 创建和使用策略 - 在运行时添加证书
2024-08-28 本文已影响0人
Cache技术分享
第十章 创建和使用策略 - 在运行时添加证书
在运行时添加证书
如果 Web
服务或客户端必须以编程方式选择并包含证书,请使用以下过程:
- 检索
%SYS.X509Credentials
的实例,如以编程方式检索凭据集中所述。
例如:
set credset=##class(%SYS.X509Credentials).GetByAlias(alias,password)
或
set credset=..SecurityIn.Signature.X509Credentials
- 创建
%SOAP.Security.BinarySecurityToken
实例,其中包含来自该凭证集的证书。例如:
set bst=##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)
其中 credentials
是在上一步中检索到的凭证集。
这将返回一个代表 <BinarySecurityToken>
元素的对象,该元素以序列化的 base-64
编码形式携带证书。
- 调用
Web
客户端或Web
服务的SecurityOut
属性的AddSecurityElement()
方法。对于方法参数,请使用之前创建的二进制安全令牌。例如:
do ..SecurityOut.AddSecurityElement(bst)
重要提示:在某些情况下,需要两个二进制安全令牌:一个用于加密,一个用于签名。请确保按适当的顺序添加它们。如果策略先加密消息然后对其进行签名,请确保先添加用于加密的二进制安全令牌,然后再添加用于签名的令牌。相反,如果策略先签名然后加密,则第一个二进制安全令牌必须是用于签名的令牌。
下面显示了 Web
服务中的 Web
方法的示例:
//get credentials
set x509alias = "something"
set pwd = "password"
set credset = ##class(%SYS.X509Credentials).GetByAlias(x509alias,pwd)
//get certificate and add it as binary security token
set cert = ##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)
do ..SecurityOut.AddSecurityElement(cert)
对于 Web
客户端,代码会略有不同,因为通常不会编辑代理客户端:
set client=##class(proxyclient.classname).%New()
//get credentials
set x509alias = "something"
set pwd = "password"
set credset = ##class(%SYS.X509Credentials).GetByAlias(x509alias,pwd)
//get certificate and add it as binary security token
set cert = ##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)
do client.SecurityOut.AddSecurityElement(cert)
//invoke web method of client