【问题标题】:What is sid claim in logout token in OpenID Connect Back-channel logout?OpenID Connect 反向通道注销中注销令牌中的 sid 声明是什么?
【发布时间】:2018-01-04 08:04:20
【问题描述】:

我目前正在从事与 OpenID Connect 反向通道注销相关的项目。如specification 中所述,我需要在注销令牌中包含 sid 作为声明。

sid- 可选的。会话 ID - 会话的字符串标识符。这表示 RP 上登录的最终用户的用户代理或设备的会话。不同的 sid 值用于识别 OP 中的不同会话。 sid 值只需要在特定发行者的上下文中是唯一的。它的内容对 RP 是不透明的。其语法与 OAuth 2.0 客户端标识符相同。

从对 sid 的解释来看,我对它是否讲述了 RP 的最终用户的 session-id 或 OP 的 RP 的 session-id 感到有些困惑。

提前致谢。

【问题讨论】:

    标签: openid-connect


    【解决方案1】:

    SID = 最终用户在特定设备/用户代理等上的会话的唯一标识符。 假设我在游戏应用程序中从安卓手机登录,并且游戏应用程序使用 openID 并通过 Facebook 或 Google 进行身份验证。游戏应用启动用户代理并连接到 OpenID 提供者。此处发生身份验证,应用程序获取 ID 令牌(其中包含 SID)。游戏应用向 OpenID 提供者请求用户声明,然后在设备上创建会话,但发送用户信息以在游戏应用服务器(此处为 RP)上创建会话。

    现在假设我在同一部手机或另一部手机上登录了另一个应用程序并做了完全相同的事情。我现在登录到两个不同的应用程序,它们有自己的会话,但我将在 OP 进行两个会话。 OP将如何区分要杀死的会话。如果没有 SID,它将终止所有会话,并且 SID 存在,只有该会话可以被终止。

    这是我能给出的最简单的解释。其他一切都是如何实现的。

    【讨论】:

    • OP 是否创建 SID 并将其发送到 ID 令牌中?
    • OP 发起的注销(在 SAML 术语中称为 IDP 发起的注销):在 OpenID 反向通道注销的情况下,SID 由 OP 生成并存储在 OP 端,这种情况下当 RP 获取来自 OP 的 ID 令牌,它必须也从 OP 获取该令牌中的 SID。现在,当 RP 收到来自 OP 的注销请求时(因为 OP 知道此令牌会话何时到期),它使用该 SID 使其会话无效。这里会话的完整会话生命周期在OP端,也有一个RP发起的,在openid.net/specs/openid-connect-session-1_0.html#RPLogout
    • 感谢您的解释!
    猜你喜欢
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2018-10-13
    • 2021-06-26
    • 1970-01-01
    • 2021-07-04
    • 2021-04-11
    • 2021-08-16
    相关资源
    最近更新 更多