在 SP 发起的 saml 流中,SAMLResponse 中的“InResponseTo”在哪里需要?

Where is `InResponseTo` required in the SAMLResponse in an SP-initiated saml flow?

阅读 SAML core documentation 我无法弄清楚在 SP 启动的 SAML2.0 Post 重定向流中哪里需要 InResponseTo(如果有的话)。

文档规定 InResponseToSubjectConfirmationData 中是可选的。文档对 InResponseTo 是否应该成为 Response 标签的一部分保持沉默,尽管我的经验是在实践中它几乎总是存在(我怀疑 InResponseToResponse 包含在我找不到的其他 SAML 文档中)。如果 InResponseTo 值进入 Response 标签或 SubjectConfirmationData (甚至其他地方),IdP 可以自由决定吗?

(为避免疑义,我理解 InResponseTo 不是 IdP 发起的响应中 SAMLResponse 的一部分。)

它在响应消息中是可选的,因为 SAML 允许 IdP 在没有 SP 请求的情况下向 SP 发送未经请求的响应。在 AuthnRequest 的 3.2.1 下,它声明 InResponseTo 必须与 AuthnRequest 中的 ID 匹配。

更重要的是。当您使用 Web 浏览器 SSO 的请求和响应时,您正在使用 SAML Profiles spec.

中的 Web 浏览器 SSO 配置文件

配置文件增加了关于如何使用请求和响应的额外要求。

4.1.4.2 <Response> Usage

If the containing message is in response to an , then the InResponseTo attribute MUST match the request's ID.

4.1.4.3 <Response> Message Processing Rules

Verify that the InResponseTo attribute in the bearer equals the ID of its original message, unless the response is unsolicited (see Section 4.1.5 ), in which case the attribute MUST NOT be present

SAML 配置文件规范在核心规范中添加了很多关于协议消息使用上下文的重要要求,这对于互操作性和安全性非常重要。

SAML core documentation 部分 3.2.2 复杂类型 StatusResponseType.

下的 InResponseTo 有明确的文档可用

<Response> 消息元素具有复杂类型 ResponseType,它扩展了 StatusResponseType。检查第 3.3.3 节

InResponseTo [Optional] A reference to the identifier of the request to which the response corresponds, if any. If the response is not generated in response to a request, or if the ID attribute value of a request cannot be determined (for example, the request is malformed), then this attribute MUST NOT be present. Otherwise, it MUST be present and its value MUST match the value of the corresponding request's ID attribute.