2017-11-17 277 views
1

OpenID Connect Core 1.0 incorporating errata set 1 Section 12.2是说:如何刷新id_token

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,它是一个签名,也许加密,智威汤逊。 然后,id_token转发到同一安全域内的其他服务。 这些其他服务需要确保最终用户验证了请求。 这对原始请求很有效。 但是,在刷新方案中,如果id_token过期,“其他服务”没有方法来确认用户。

确定在用户信息端点有相同的信息,但这需要“其他服务”来获取访问令牌。 基于最不重要的原则,访问令牌具有比被转发的id_token更多的特权。

我知道的唯一的其他选项是将id_token复制到另一个JWT并发送它,但这当然是更多的“make work”。

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

回答

0

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

提示=无

这使得

如果提到的相关服务可能会消耗与授权服务器相同的共享会话授权服务器之间的SSO的行为,他们可以使用prompt = none来获得一个交互免费的id令牌。

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

认证请求中包含与 值没有任何提示参数。在这种情况下,如果最终用户尚未通过身份验证,或者无法通过身份验证,则授权服务器务必返回 错误。

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

会话共享

如果什么提到服务驻留在同一个域内,共享同一个会话。这不会让他们分享同一个校长吗?这意味着您不必共享id令牌与依赖服务。