在 OpenID Connect 中,访问令牌具有到期时间。对于授权代码流,这通常很短(例如 20 分钟),之后您使用刷新令牌请求新的访问令牌。
ID 令牌也有到期时间。我的问题是这样做的目的是什么?
任何小于刷新令牌到期时间的 ID 令牌到期时间都意味着您最终将拥有一个过期的 ID 令牌,但它是一个有效的访问令牌。
你的意思是:
- 将您的 ID 令牌的有效期设置为比刷新令牌的有效期长,或者
- 将其设置为与访问令牌相同的到期时间,并在到期时采取一些措施(什么?),或者
- 只是在收到时在您的客户端中使用 ID 令牌,然后忽略之后的到期时间?
OpenID Connect 规范只是说在验证 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将其设置为访问令牌到期时间)。