【发布时间】:2015-06-09 21:49:30
【问题描述】:
我正在为现有 IDP 开发 OpenID 连接会话管理。在规范中提到我们应该将会话状态从 RP 发送到 OP。我需要知道这里会话状态的真正含义。我还需要知道我应该将什么作为盐值?
【问题讨论】:
标签: openid-connect
我正在为现有 IDP 开发 OpenID 连接会话管理。在规范中提到我们应该将会话状态从 RP 发送到 OP。我需要知道这里会话状态的真正含义。我还需要知道我应该将什么作为盐值?
【问题讨论】:
标签: openid-connect
此会话状态值是 OP 在原始登录时在身份验证响应中提供给 RP 的内容。该值对 RP 是不透明的,它只需要跟踪它并在其 postMessage 从 RP iframe 到 OP 的调用中将其发送回 OP,以便 OP 可以关联它。
正如规范在http://openid.net/specs/openid-connect-session-1_0.html#CreatingUpdatingSessions 所说:
当 OP 支持会话管理时,它还必须返回会话状态作为身份验证响应中的附加 session_state 参数。 OpenID Connect 身份验证响应在 OpenID Connect Core 1.0 的第 3.1.2.5 节中指定。
这个参数是:
session_state
会话状态。 JSON 字符串,表示最终用户在 OP 的登录状态。它不得包含空格 (" ") 字符。该值对 RP 是不透明的。如果支持会话管理,这是必需的。 会话状态值最初是在服务器上计算的。浏览器客户端中的 OP iframe 也会重新计算相同的 Session State 值。合适的会话状态值的生成在第 4.2 节中指定,并且基于客户端 ID、原始 URL 和 OP 浏览器状态的加盐密码散列。对于原始 URL,服务器可以使用身份验证响应的原始 URL,遵循 RFC 6454 [RFC6454] 第 4 节中指定的算法。
【讨论】:
session_state 值作为 Authentication Response 中的查询参数返回。