文章
· 八月 28 阅读大约需 2 分钟

第十章 创建和使用策略 - 在运行时添加证书

第十章 创建和使用策略 - 在运行时添加证书

在运行时添加证书

如果 Web 服务或客户端必须以编程方式选择并包含证书,请使用以下过程:

  1. 检索 %SYS.X509Credentials 的实例,如以编程方式检索凭据集中所述。

例如:

 set credset=##class(%SYS.X509Credentials).GetByAlias(alias,password)

 set credset=..SecurityIn.Signature.X509Credentials 
  1. 创建 %SOAP.Security.BinarySecurityToken 实例,其中包含来自该凭证集的证书。例如:
 set bst=##class(%SOAP.Security.BinarySecurityToken).CreateX509Token(credset)

其中 credentials 是在上一步中检索到的凭证集。

这将返回一个代表 <BinarySecurityToken> 元素的对象,该元素以序列化的 base-64 编码形式携带证书。

  1. 调用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
讨论 (0)1
登录或注册以继续