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