2.4.1.2 元素<SubjectConfirmationData>

本博客采用知识共享署名 4.0 国际许可协议进行许可

元素<SubjectConfirmationData>是SubjectConfirmationDataType复杂类型。它指定了允许主体被确认的额外的数据信息,或者说是设定了约束场景,只有在约束的场景下对主体的确认行为才有效。对主体的确认行为发生在依赖方试图去验证断言发布方与断言所声明主体之间的关系时。它包含下列可选的属性,这些属性可以应用在任何方法中:

译者(义臻)注:上面一段的意思是,依赖方在验证断言中的主体时,需要同时验证主体对应的生效条件,这些生效条件在元素<SubjectConfirmationData>中指定。

  • NotBefore [可选]

一个时间点,在这个时间点之前,主体不能被确认。时间点是UTC格式,如第1.3.3节所述。

  • NotOnOrAfter [可选]

一个时间点,在这个时间点或之后,主体不能被确认。时间点是UTC格式,如第1.3.3节所述。

  • Recipient [可选]

一个URI,用来制定断言发布方把断言交给哪个实体或者地址。例如,这个属性可能指示必须将断言传递到特定的网络端点,以防止中介将其重定向到其他地方。

译者(义臻)注:Recipient通常为依赖方的ACS地址。

  • InResponseTo [可选]

SAML协议消息的ID,该消息是断言发布方对于触发断言一方的回应。例如,该属性可以用来把SAML断言和触发该断言的SAML请求关联起来。

译者(义臻)注:在SAML文档中,在不同的场景下,关于身份提供商(IDP)和服务提供方(SP)有多种叫法。比如IDP,有时候叫做attesting entity、有时候叫asserting party、有时候叫asserting entity。SP有时候叫relying party

  • Address [可选]

断言发布方出示断言的网络地址。例如,这个属性可用于将断言绑定到特定的客户端地址,以防止攻击者轻易地从其他位置窃取和呈现断言。IPv4地址应以通常的点十进制格式表示(例如,“1.2.3.4”)。IPv6地址应该按照[RFC 3513]文档中2.2章节定义的来表示(例如,"FEDC:BA98:7654:3210:FEDC:BA98:7654:3210")。

  • 定制的属性

这个复杂类型使用<xs:anyAttribute>扩展点,允许将任意命名空间限定的XML属性添加到<SubjectConfirmationData>结构当中,而无需进行显式的schema扩展。这允许按需添加其他字段,以提供额外的与确认相关的信息。SAML扩展不能向SubjectConfirmationDataType复杂类型或其派生添加本地(非命名空间限定)XML属性或SAML定义的命名空间限定的XML属性;这样的属性是保留的,以方便SAML自身在未来进行维护和增强。

  • 定制的元素

这个复杂类型使用<xs:any>扩展点,以允许将任意的XML元素添加到<SubjectConfirmationData>结构当中,而无需进行显式的schema扩展。这允许按需添加其他元素,以提供额外的与确认相关的信息。

使用这些方法的特定确认方法和配置文件可能需要使用此复杂类型中定义的一个或多个属性。有关如何使用这些属性的示例,请参见概要文件规范[SAMLProf]。

注意,由可选的NotBefore和NotNorAfter属性指定的时间段,如果存在的话,应该在<Conditions>元素的NotBefore和NotNorAfter属性指定的整个断言有效期内。如果两个属性都存在的话,NotBefore的值必须小于(早于)NotNorAfter的值。

下列的schema片段定义了<SubjectConfirmationData>元素以及它的SubjectConfirmationDataType复杂类型:

<element name="SubjectConfirmationData"
type="saml:SubjectConfirmationDataType"/>
<complexType name="SubjectConfirmationDataType" mixed="true">
    <complexContent>
        <restriction base="anyType">
            <sequence>
                <any namespace="##any" processContents="lax" minOccurs="0"
            maxOccurs="unbounded"/>
            </sequence>
            <attribute name="NotBefore" type="dateTime" use="optional"/>
            <attribute name="NotOnOrAfter" type="dateTime" use="optional"/>
            <attribute name="Recipient" type="anyURI" use="optional"/>
            <attribute name="InResponseTo" type="NCName" use="optional"/>
            <attribute name="Address" type="string" use="optional"/>
            <anyAttribute namespace="##other" processContents="lax"/>
        </restriction>
    </complexContent>
</complexType>

Last updated

Was this helpful?