第四十七章 创建和添加 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属性设置为等于此列表。