第四十五章 创建和添加 SAML 令牌 - 变体:不使用
变体:不使用 <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
属性设置为等于此列表。