【发布时间】:2014-10-30 10:37:56
【问题描述】:
在 OpenID Connect 中,访问令牌 有一个到期时间。对于授权代码流,这通常很短(例如 20 分钟),之后您使用刷新令牌请求新的访问令牌。
ID 令牌 也有到期时间。我的问题是这样做的目的是什么?
任何小于刷新令牌到期时间的 ID 令牌到期时间都意味着您最终将拥有一个已过期的 ID 令牌,但是一个有效的访问令牌。
你的意思是:
- 将您的 ID 令牌的有效期设置为比刷新令牌的有效期长,或者
- 将其设置为与访问令牌相同的到期时间,并在到期时采取一些措施(什么?),或者
- 只在收到时在您的客户端使用 ID 令牌,然后忽略过期时间?
OpenID Connect specification 只是说在验证 ID 令牌时,
"The current time MUST be before the time represented by the exp Claim."
其中(可能)支持上述第三个选项。
编辑
由于 OpenID Connect 建立在 OAuth2 之上,因此下面补充问题的答案可以在 OAuth2 specification 中找到,其中说:
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 将此设置为访问令牌到期时间)。
【问题讨论】: