文章
· 十月 14 阅读大约需 2 分钟

第四十七章 创建和添加 SAML 令牌 - SubjectConfirmation与 EncryptedKey

第四十七章 创建和添加 SAML 令牌 -

<SubjectConfirmation><EncryptedKey>

要添加带有 <SubjectConfirmationData>(其中包含 <EncryptedKey> 元素)的 <SubjectConfirmation>,请执行以下操作:

  1. 按照以编程方式检索凭证集中所述,创建 %SYS.X509Credentials 的实例。

或者使用与签署断言时使用的相同凭证集。

  1. 设置 SAML 断言对象的 Subject 属性的 NameID 属性。
  2. 调用 SAML 断言对象的 Subject 属性的 AddEncryptedKeyConfirmation() 方法。
method AddEncryptedKeyConfirmation(credentials As %X509.Credentials) as %Status

对于参数,请使用之前创建的 %SYS.X509Credentials实例。

<SubjectConfirmation>BinarySecret 作为密钥持有者

要添加以 BinarySecret 作为 Holder-of-key<SubjectConfirmation>,请执行以下操作:

  1. 签署 SAML 断言时,请按如下方式创建签名:
set sig=##class(%XML.Security.Signature).Create(assertion,$$$SOAPWSIncludeNone,$$$SOAPWSSAML)

其中断言是 SAML 断言。请注意,在此场景中使用 Create() 方法。$$$SOAPWSSAML 引用选项创建对 SAML 断言的引用。

  1. 创建 BinarySecret。为此,请调用 %SOAP.WST.BinarySecretCreate() 方法:
set binsec=##class(%SOAP.WST.BinarySecret).Create()
  1. 调用 SAML 断言对象的 Subject 属性的 AddBinarySecretConfirmation() 方法:
set status=assertion.Subject.AddBinarySecretConfirmation(binsec)

对于 binsec,请使用在上一步中创建的 BinarySecret

这将添加一个 <SubjectConfirmation>,其中包含一个 <SubjectConfirmationData>,该 <SubjectConfirmationData> 包含一个 <KeyInfo>,该 <KeyInfo> 包含 <BinarySecret>。

添加 <Conditions> 元素

要将 <Conditions> 元素添加到 %SAML.Assertion 实例 执行以下操作:

  1. 创建 %SAML.Conditions的实例。
  2. 根据需要指定此实例的属性。
  3. 将断言对象的“条件”属性设置为等于此实例。

添加<Advice>元素

要将 <Advice> 元素添加到 %SAML.Assertion实例,请执行以下操作:

  1. 创建下列一个或多个类的实例:
  • %SAML.AssertionIDRef

  • %SAML.AssertionURIRef

  • %SAML.EncryptedAssertion

  1. 根据需要指定这些实例的属性。
  2. 创建一个包含这些建议实例的列表。
  3. 将断言对象的 Advice 属性设置为等于此列表。
讨论 (0)1
登录或注册以继续