提问人:Sanath Surya 提问时间:11/12/2023 更新时间:11/12/2023 访问量:30
OpenID Connect - 刷新 ID 令牌
OpenID Connect - Refreshing ID token
问:
我一直在为本机应用程序(具有服务器组件)实现 OpenID Connect。我正在模仿本机应用程序的授权代码流。在 OIDC 流之后,在服务器端接收 ID 令牌、Accesstoken 和刷新令牌。服务器验证 ID 令牌并将应用会话返回给本机客户端。
我不清楚此流程中刷新令牌的用例。在这种情况下,支持刷新 ID 令牌是否有意义?即,如果应用程序会话过期,并且客户端将过期的应用程序会话传递给服务器,则服务器可以使用刷新令牌获取刷新令牌,并从 OAuth 服务器获取新的 ID 令牌并铸造新的应用程序会话。这种方法似乎与(不完全相同)具有长期存在的应用程序会话一样好,b'coz 应用程序始终可以更新应用程序会话以代替其过期的会话。
我尝试了 Okta 开发人员控制台,它支持刷新 ID 令牌。但我不清楚刷新 ID 令牌的用例。
答:
在 OAuth 中,ID 令牌表示身份验证事件的证明。同时,用户身份验证后颁发的第一个刷新令牌表示客户端与 API 会话的生存期。
发生令牌刷新时,通常还会颁发新的刷新令牌。颁发新的 ID 令牌没有意义,如 OpenID Connect 规范的相关部分所述。授权服务器可以选择在刷新响应中返回 ID 令牌。根据我的经验,这样做的唯一真正用例是启用 OAuth 库,这些库期望所有 3 个令牌都存在于令牌响应中。
Web 客户端通常使用后端,该后端在验证 ID 令牌后引导基于 cookie 的会话。Cookie 经过加密,包含或引用基础 OAuth 令牌。令牌刷新后,Cookie 可能会被重写,但客户端不能仅仅因为获得新的 ID 令牌而使用 API 扩展自己的会话。相反,当原始刷新令牌的生存期到期时,API 会话将过期。
评论