第四十七章 创建和添加 SAML 令牌 - 与
<SubjectConfirmation>
与 <EncryptedKey>
要添加带有 <SubjectConfirmationData>
(其中包含 <EncryptedKey>
元素)的 <SubjectConfirmation>
,请执行以下操作:
- 按照以编程方式检索凭证集中所述,创建
%SYS.X509Credentials
的实例。
或者使用与签署断言时使用的相同凭证集。
- 设置
SAML
断言对象的Subject
属性的NameID
属性。 - 调用
SAML
断言对象的Subject
属性的AddEncryptedKeyConfirmation()
方法。
method AddEncryptedKeyConfirmation(credentials As %X509.Credentials) as %Status
对于参数,请使用之前创建的 %SYS.X509Credentials
实例。
<SubjectConfirmation>
以 BinarySecret
作为密钥持有者
要添加以 BinarySecret
作为 Holder-of-key
的 <SubjectConfirmation>
,请执行以下操作:
- 签署
SAML
断言时,请按如下方式创建签名:
set sig=##class(%XML.Security.Signature).Create(assertion,$$$SOAPWSIncludeNone,$$$SOAPWSSAML)
其中断言是 SAML
断言。请注意,在此场景中使用 Create()
方法。$$$SOAPWSSAML
引用选项创建对 SAML
断言的引用。
- 创建
BinarySecret
。为此,请调用%SOAP.WST.BinarySecret
的Create()
方法:
set binsec=##class(%SOAP.WST.BinarySecret).Create()
- 调用
SAML
断言对象的Subject
属性的AddBinarySecretConfirmation()
方法:
set status=assertion.Subject.AddBinarySecretConfirmation(binsec)
对于 binsec
,请使用在上一步中创建的 BinarySecret
。
这将添加一个 <SubjectConfirmation>,其中包含一个 <SubjectConfirmationData>,该 <SubjectConfirmationData> 包含一个 <KeyInfo>,该 <KeyInfo> 包含 <BinarySecret>。
添加 <Conditions>
元素
要将 <Conditions>
元素添加到 %SAML.Assertion
实例 执行以下操作:
- 创建
%SAML.Conditions
的实例。 - 根据需要指定此实例的属性。
- 将断言对象的“条件”属性设置为等于此实例。
添加<Advice>
元素
要将 <Advice>
元素添加到 %SAML.Assertion
实例,请执行以下操作:
- 创建下列一个或多个类的实例:
-
%SAML.AssertionIDRef
-
%SAML.AssertionURIRef
-
%SAML.EncryptedAssertion
- 根据需要指定这些实例的属性。
- 创建一个包含这些建议实例的列表。
- 将断言对象的
Advice
属性设置为等于此列表。