如何刷新id_token

时间:2017-11-17 22:34:25

标签: oauth-2.0 openid-connect

在包含勘误集1的OpenID Connect Core 1.0中,第12.2节说: 12.2。成功的刷新响应 成功验证刷新令牌后,响应正文是3.1.3.3节的令牌响应,但它可能不包含id_token。 最初获取id_token时,它是一个签名的,也许是加密的JWT。 然后,id_token转发到同一安全域内的其他服务。 这些其他服务需要确保最终用户已对该请求进行了身份验证。 这适用于原始请求。 但是,在刷新方案中,如果id_token已过期,则“其他服务”无法确认用户。 当然,用户信息端点可以获得相同的信息,但这需要“其他服务”来获取访问令牌。 基于最小原则主体,访问令牌具有比转发的id_token更多的权限。 我所知道的唯一另一个选择是将id_token复制到另一个JWT并发送它,但这当然更像是“make work”。 在我看来,如果原始请求没有更改范围,则不返回id_token是一个问题。

1 个答案:

答案 0 :(得分:1)

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

<强>提示=无

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

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

  

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

     

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

此外,如果这些相关服务具有此类要求,则可以使用最小范围值发送授权请求。

会话分享

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