我正在为现有IDP开发OpenID连接会话管理。在规范中它提到我们应该将会话状态从RP发送到OP。我需要知道会话状态的真正含义。另外,我需要知道我应该采取什么样的盐值?
答案 0 :(得分:2)
此会话状态值是OP在原始登录时在身份验证响应中向RP提供的值。该值对RP是不透明的,它只需要跟踪它并将其从RP iframe到OP的postMessage
调用发送回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
会话状态。表示OP上最终用户登录状态的JSON字符串。它不能包含空格(“”)字符。该值对RP不透明。如果支持会话管理,则必须这样做。 会话状态值最初在服务器上计算。浏览器客户端中的OP iframe也会重新计算相同的会话状态值。适当的会话状态值的生成在4.2节中指定,并基于客户端ID,源URL和OP浏览器状态的盐渍加密哈希。对于原始URL,服务器可以使用身份验证响应的原始URL,遵循RFC 6454 [RFC6454]第4节中指定的算法。