在OAuth2中,当执行刷新令牌请求以检索新的访问令牌时,先前的访问令牌是否无效?

时间:2020-01-24 04:24:25

标签: oauth-2.0

步骤。

1. GET https://<canvas-install-url>/login/oauth2/auth?client_id=XXX&response_type=code&redirect_uri=https://example.com/oauth_complete&state=YYY&scope=<value_1>%20<value_2>%20<value_n>
2. POST /login/oauth2/token [grant_type=authorization_code] 
Response:
{
    "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
    "token_type": "Bearer",
    "user": {"id":42, "name": "Jimi Hendrix"},
    "refresh_token": "tIh2YBWGiC0GgGRglT9Ylwv2MnTvy8csfGyfK2PqZmkFYYqYZ0wui4tzI7uBwnN2",
    "expires_in": 3600
}
3. POST /login/oauth2/token [grant_type=refresh_token] 
Response:
{
    "access_token": "new_1/fFAGRNJru1FTz70BzhT3Zg",
    "token_type": "Bearer",
    "user": {"id":42, "name": "Jimi Hendrix"},
    "refresh_token": "tIh2YBWGiC0GgGRglT9Ylwv2MnTvy8csfGyfK2PqZmkFYYqYZ0wui4tzI7uBwnN2",
    "expires_in": 3600
}

从步骤2:

"access_token": "1/fFAGRNJru1FTz70BzhT3Zg" - using this token returns an invalid access token error

从第3步开始:

"access_token": "new_1/fFAGRNJru1FTz70BzhT3Zg_new" - works!

我的问题是

  1. 这是预期的行为吗?
  2. 第2步中的访问令牌在到期之前(3600s)有效吗?

2 个答案:

答案 0 :(得分:1)

否在使用刷新令牌并刷新时,它将生成一个新的访问令牌并附加到刷新令牌。之后,旧的访问令牌将不再起作用。

有效期是访问令牌的最大TTL,之后必须进行刷新,但没有刷新访问令牌的最低阈值。

答案 1 :(得分:1)

((我想回应您在shazin的回​​答中的评论。但是我没有声誉:()

AFAIK当使用刷新令牌获取新的访问令牌时,旧的访问令牌无效。

我简要查看了OAuth2规范,但找不到使用刷新令牌时旧访问令牌无效的信息。也许是因为假定刷新令牌仅在访问令牌无效时使用。

无论如何,规范中的这两个参考文献将有所帮助。

  1. Refresh token
  2. Refreshing an Access Token
相关问题