В OAuth2, когда запрос токена refre sh выполняется для получения нового токена доступа, аннулируются ли предыдущие токены доступа? - PullRequest
1 голос
/ 24 января 2020

шагов.

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 будет действителен до истечения срока его действия (3600 с)?

Ответы [ 2 ]

1 голос
/ 24 января 2020

(Я хотел ответить на ваш комментарий в ответе Шазина. Но у меня нет репутации :()

AFAIK Старый токен доступа становится недействительным, когда для получения нового доступа используется токен refre sh. токен.

Я кратко посмотрел на OAuth2 Spe c, но не смог найти ничего, говорящего о том, что старый токен доступа признан недействительным при использовании токена refre sh. Возможно, потому что предполагается, что refre sh токен используется только тогда, когда токен доступа недействителен.

В любом случае, возможно, эти 2 ссылки из спецификации c помогут.

  1. Refre sh токен
  2. Обновление токена доступа
1 голос
/ 24 января 2020

Нет Когда вы используете токен refre sh и refre sh, он генерирует новый токен доступа и присоединяется к токену refre sh. Старые маркеры доступа больше не будут работать после этого.

Expires in - это максимальный TTL токена доступа, после которого refre sh является обязательным, но минимальное пороговое значение для обновления токена доступа отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...