【问题标题】:How to refresh an id_token如何刷新 id_token
【发布时间】:2017-11-18 14:19:47
【问题描述】:

在OpenID Connect Core 1.0 incorporating errata set 1 Section 12.2 中说:

12.2.  Successful Refresh Response

Upon successful validation of the Refresh Token, the response body is the Token Response of Section 3.1.3.3 except that it might not contain an id_token.

最初获取 id_token 时,它是一个签名的,也许是加密的 JWT。 然后将 id_token 转发到同一安全域内的其他服务。 这些其他服务需要确保最终用户已对请求进行身份验证。 这适用于原始请求。 但是在刷新场景下,如果id_token过期了,“其他服务”就没有办法确认用户了。

确定在用户信息端点上可以使用相同的信息,但这需要“其他服务”来获取访问令牌。 基于最小原则原则,Access Token 比被转发的 id_token 拥有更多的权限。

我知道的唯一其他选择是将 id_token 复制到另一个 JWT 中并发送,但这当然更“使工作”。

在我看来,如果原始请求没有范围更改,则不返回 id_token 是一个问题。

【问题讨论】:

    标签: oauth-2.0 openid-connect


    【解决方案1】:

    OpenID Connect 协议将一些实施决策留给实施者。您描述的这种情况就是这样的事情。但我看到你可以尝试几个选项,

    提示=无

    这允许授权服务器之间的 SSO 行为

    如果提到的依赖服务可以使用与授权服务器相同的共享会话,则它们可以使用 prompt=none 来获取交互免费 id 令牌。

    在以下情况下,授权服务器不得与最终用户交互:

    身份验证请求包含提示参数 值无。在这种情况下,授权服务器必须返回一个 如果最终用户尚未通过身份验证或无法通过身份验证,则会出现错误 静默认证。

    此外,如果这些依赖服务有这样的要求,可以使用最小范围值发送授权请求。

    会话分享

    如果提到的服务位于同一个域中并共享同一个会话,该怎么办。这不会使他们共享相同的校长吗?这意味着您根本不必与依赖服务共享 id 令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-03
      • 2015-02-01
      • 2020-07-08
      • 2016-01-13
      • 2017-01-11
      • 2018-02-18
      • 2019-12-08
      • 2020-08-13
      相关资源
      最近更新 更多