第四十五章 创建和添加 SAML 令牌 - 变体:不使用 BinarySecurityToken
第四十五章 创建和添加 SAML 令牌 - 变体:不使用 <BinarySecurityToken>
变体:不使用 <BinarySecurityToken>
<BinarySecurityToken> 包含序列化、base-64 编码格式的证书。可以忽略此令牌,而改用标识证书的信息;接收方使用此信息从相应位置检索证书。为此,请使用上述步骤,并进行以下更改:
- 跳过步骤
2和3。也就是说,不要创建和添加<BinarySecurityToken>.。 - 在步骤
4中,使用凭证集(而不是二进制安全令牌)作为CreateX509()的第一个参数。例如:
set assertion=##class(%SAML.Assertion).CreateX509(credset,referenceOption)
对于 referenceOption,可选择指定一个值,如 X.509 凭证的参考选项中所述。可以使用除 $$$SOAPWSReferenceDirect 之外的任意值。
如果指定凭证集作为第一个参数(正如我们在这个变体中所做的那样),则默认引用选项是证书的指纹。
变体:创建未签名的 SAML 断言
要创建未签名的 SAML 断言,请使用上述步骤,并进行以下更改:
- 跳过步骤
1、2和3。也就是说,不要创建和添加<BinarySecurityToken>.。 - 对于步骤
4,请使用Create()方法而不是CreateX509()。此方法不带参数。例如:
set assertion=##class(%SAML.Assertion).Create()
此方法返回 %SAML.Assertion的一个实例。 IRIS 会自动设置此实例的 SAMLID 和 Version 属性。Signature 属性为空。
添加 SAML 语句
要将 SAML 语句添加到 %SAML.Assertion 实例,请执行以下操作:
- 创建适当语句类的一个或多个实例:
-
%SAML.AttributeStatement -
%SAML.AuthnStatement -
%SAML.AuthzDecisionStatement
- 根据需要指定这些实例的属性。
对于 %SAML.AttributeStatement,Attribute 属性是 %SAML.Attribute 或 %SAML.EncryptedAttribute 的实例。
%SAML.Attribute 在其 AttributeValue 属性中带有属性值,该属性值是的 %SAML.AttributeValue实例的列表。
要在实例中向 %SAML.Attribute添加属性值:
a. 创建 %SAML.AttributeValue 的实例。
b. 使用 %SAML.AttributeValue的方法在中将属性指定为 XML、字符串或单个子元素。
c. 创建一个包含这些属性值实例的列表。
d. 将属性对象的 AttributeValue 属性设置为等于此列表。
或者直接指定 AttributeValueOverride 属性。对于值,使用值所需的精确字符串(XML 混合内容字符串)。
- 创建一个包含这些语句实例的列表。
- 将断言对象的
Statement属性设置为等于此列表。