Почему токен обновления должен быть заменен при использовании? - PullRequest
1 голос
/ 06 июня 2019

Я вижу, что большинство людей говорят, что когда мы используем токен обновления для обмена на новый токен доступа, сервер аутентификации выдаст новый токен обновления и сделает недействительным предыдущий.См. Рекомендации по обновлению OAuth-обновления токенов

Но с веб-сайта OAuth https://www.oauth.com/oauth2-servers/access-tokens/refreshing-access-tokens/

В нем говорится, что сервер аутентификации может "дополнительно выдать новый свежий токен в ответ, или еслимы не включаем новый токен обновления, клиент предполагает, что текущий токен обновления будет оставаться действительным "

Таким образом, похоже, что оба параметра (сохранить или обновить токен обновления) приемлемы для стандарта OAuth2.

Мои вопросы:

1) Оба варианта одинаково безопасны?

2) Если сервер аутентификации возвращает новый токен обновления, но клиент не получает (например, ошибка сети), клиент не может повторно получить токен доступа с существующим токеном обновления, который уже аннулирован.Правильно?

3) Если токен обновления был передан кому-то еще, его могут использовать как злоумышленник, так и клиент-жертва.Если сервер аутентификации использует подход обновления, то только первый, кто использует токен обновления, может повторно получить токен доступа.Таким образом, если жертва обнаружила, что токен обновления больше не действителен, он может подумать, что токен обновления был скомпрометирован.В этом ли причина «подхода обновления»?

1 Ответ

2 голосов
/ 06 июня 2019

2.) Да, это правильно.

3.) Это тоже правильно.Вы можете взглянуть на OAuth 2.0 для приложений на основе браузера RFC , в котором обсуждается регенерация токенов обновления.Это важно в основном для публичных клиентов - тех, у которых нет client_secret, поскольку токен обновления можно сразу заменить на токен доступа.

1.) Регенерация токена обновления - это функция безопасности - она ​​сокращает срок действия украденного токена обновления и позволяет серверу авторизации обнаружить, что токен обновления был скомпрометирован.Так что безопаснее его использовать, чем нет.Но для частных клиентов может быть удобнее не получать новый токен обновления при каждом использовании - например, чтобы предотвратить потерю токена обновления из-за сетевой ошибки - как вы описали его в пункте №2.

...