Зачем нужен refresh token?

Не понимаю зачем нужен refresh token. В интернете я нашёл 2 причины:
1) Refresh token можно отправлять не при каждом запросе, а только изредка, что снижает риск его перехвата. А access token отправляется часто, но имеет короткий срок службы. Но что если я храню токены в HTTPonly куках? Куки в любом случае отправляются при каждом запросе и учитывая то что все запросы защищены SSL - тут вроде бы проблем с безопасностью быть не должно. В любом случае HTTPonly куки - самое безопасное место для хранения токенов в браузере.
2) Refresh token позволяет избежать использования одной сессии на 2 устройствах одновременно (в случае кражи токенов) за счёт того что каждый refresh token можно использовать только 1 раз и при попытке использования того же refresh token'а повторно мы можем обнулить сессию.

Итого. Первый пункт не имеет смысла при хранение токенов в HTTPonly куках, а второй пункт можно реализовать и с использованием одного самообновляющегося токена, который будет иметь короткий период использования в качестве access token'а и длинный период в качестве refresh token'а. Так в чём же суть refresh token'а?
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
sarapinit
@sarapinit
Точу водой камень
Определение токена в RFC
Refresh tokens are credentials used to obtain access tokens. Refresh
tokens are issued to the client by the authorization server and are
used to obtain a new access token when the current access token
becomes invalid or expires, or to obtain additional access tokens
with identical or narrower scope (access tokens may have a shorter
lifetime and fewer permissions than authorized by the resource
owner). Issuing a refresh token is optional at the discretion of the
authorization server.

примерно соответствует вашим рассуждениям о нем. Единственное что явно не запрещено повторное использование refresh_token. Обычно это опция которую можно установить для конкретного клиента OAuth2.0.
Использовать refresh_token в браузере не рекомендуется, потому что нельзя безопасно его хранить. Обычно он используется в десктоп или мобильных приложениях, которые позволяют реализовать защищенное хранение токена.

https://tools.ietf.org/html/rfc6749#section-1.5
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы