【问题标题】:OpenID Connection session management - can ID token be revoked?OpenID 连接会话管理 - 可以撤销 ID 令牌吗?
【发布时间】:2015-12-08 14:16:01
【问题描述】:

在 OpenID Connect 中,ID 令牌是经过加密签名的自包含令牌,它允许资源所有者授权访问而无需调用授权服务器。那么,如果授权服务器不需要验证令牌,如何在会话管理场景中撤销它?似乎唯一可以撤销的是刷新令牌,此时 ID 令牌将过期并且用户必须重新进行身份验证。它是否正确?此外,OpenID Connect 提供者/服务器在交付令牌时存储令牌是否有意义?

【问题讨论】:

    标签: access-token jwt openid-connect


    【解决方案1】:

    由于您提到的原因,id_token 无法显式撤销:它是自包含的,可以在不依赖 Provider 的情况下使用。但是,Web 应用程序中的一个典型用法是在收到id_token 时使用它来创建应用程序会话,将来自id_token 的相关信息存储在会话中,然后丢弃id_token 本身。通过实施 OpenID Connect 会话管理扩展,可以根据 Provider 的请求终止该应用程序会话,请参阅:https://openid.net/specs/openid-connect-session-1_0.html。在此 Web SSO 用例中,id_token 的生命周期将受到限制,因为它只能使用一次。

    【讨论】:

    • 感谢您的回复!就这样我理解了整个情况,在典型的单页应用程序场景中,id 令牌用于检索用户信息并创建客户端会话。访问令牌是令牌端点返回的另一个令牌,用于授权访问受保护的 API 资源。它是否正确?客户端应用程序是否需要能够验证 id 令牌?看看是不是过期了?我假设只要发行者受信任,它就不需要验证令牌。但它可能需要确保它没有过期,如果它使用刷新令牌来更新它?
    • 我敢打赌,在每次请求受保护的 API 资源时,都需要对访问令牌和 id 令牌进行相同的过期检查。如果其中任何一个过期,请使用刷新令牌更新两者。
    • 无法使用refresh_token 获得新的id_token,因为id_token 的语义要求用户在场/经过身份验证,即用户必须参与其中;向 Provider 提出新的身份验证请求是可行的方法;在提供者处,SSO 会话可能仍然存在,在这种情况下,新的 id_token 会在没有明确的用户交互的情况下生成
    猜你喜欢
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2019-09-23
    • 2015-05-11
    • 2018-01-31
    • 2021-12-27
    • 2018-09-21
    • 1970-01-01
    相关资源
    最近更新 更多