在 OpenID 连接中,访问令牌有一个有效期。对于授权代码流,这通常很短(例如20分钟) ,之后您可以使用刷新令牌来请求新的访问令牌。
身份令牌也有一个到期时间。我的问题是这样做的意图是什么?
任何 ID 令牌过期时间小于刷新令牌的过期时间将意味着您最终将拥有一个过期的 ID 令牌,但是一个有效的访问令牌。
所以你是不是应该:
OpenID 连接规范只是说,在验证 ID 令牌时,
"The current time MUST be before the time represented by the exp Claim."
它(可能)支持上述第三种选择。
剪辑
由于 OpenID Connect 建立在 OAuth2之上,下面补充问题的答案可以在 OAuth2规范中找到,
expires_in
RECOMMENDED. The lifetime in seconds of the access token.
一个相关的问题是,当您为令牌交换授权代码时,相同的规范说明您可能会得到如下响应:
{
"access_token": "SlAV32hkKG",
"token_type": "Bearer",
"refresh_token": "8xLOxBtZp8",
"expires_in": 3600,
"id_token": "eyJhbG[...]"
}
但在这种情况下,“ expires _ in”与什么有关呢? 访问令牌、刷新令牌还是 ID 令牌?
(有关信息,请参阅 IdentityServer3身份服务器3将此设置为访问令牌到期时间)。