3.4.1.4 处理规则

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

<AuthnRequest>和<Response>信息的交换支持多种使用场景,因此通常会对其进行概述,以便在特定环境中使用,在这些环境中,可选性受到约束,并且要求或禁止特定类型的输入和输出。以下处理规则作为不变行为应用于此协议交换的任何场景概述中。还必须遵守与底层请求和响应消息相关的所有其他处理规则。

响应者必须最终用包含一个或多个“满足由请求定义的规范”的断言的<Response>消息来回应<AuthnRequest>

响应者最终必须使用包含一个或多个符合请求定义的规范的断言的<Response>消息来回复<AuthnRequest>,或者使用 或者使用包含描述所发生错误的<Status>元素的<Response>消息。根据协议绑定和认证机制的特征,响应者可以根据需要与请求提出方进行额外的消息交换,以启动或完成认证过程。如下一节所述,这包括通过发布自己的<AuthnRequest>消息来将请求提出者定向到另一个身份提供商的方式来代理请求,以便于生成的断言可用于向原始的响应者认证请求者,实际上是使用SAML作为身份验证机制。

如果响应者无法对请求提出方进行身份认证,或者无法识别请求的主体,或者如果身份提供者的生效策略阻止了响应者提供断言(例如,目标主体禁止身份提供商向依赖方提供断言),那么它必须返回包含错误<Status>的<Response>,并且可以返回值为urn:oasis:names:tc:SAML:2.0:status:AuthnFailedurn:oasis:names:tc:SAML:2.0:status:UnknownPrincipal的二级<StatusCode>。

如果请求中的<saml:Subject>元素存在,那么结果断言中的<saml:Subject>必须与请求中的<saml:Subject>强烈匹配,如3.3.4节所述,除非如果<NameIDPolicy>指定,那么标识符可能采用不同的格式。在这种情况下,标识符表面上的内容可能不同,但它必须指向相同的主体。

所有<AuthnRequest>中明确定义的内容都是可选的,尽管其中的一些内容在某些配置概述中可能是必须的。在完全没有任何具体内容的情况下,代表采用以下行为:

  • 返回的断言必须包含代表请求提出者的<saml:Subject>元素。标识符的类型和格式由身份提供商决定。至少存在一个断言中包含<saml:AuthnStatement>声明,该声明描述了由响应者进行的认证或与之相关的认证服务。

  • 请求提出者应该尽可能成为唯一能够满足断言<saml:SubjectConfirmation>的证明实体。

  • 结果断言必须包含一个<saml:audenceRestriction>元素,该元素引用请求者作为可接受的依赖方。

Last updated

Was this helpful?