Ответ
Refresh token — это долгоживущий токен, используемый для безопасного получения новых access token без повторного ввода учетных данных пользователя. Это ключевой компонент для баланса между безопасностью и удобством в OAuth 2.0 и JWT-аутентификации.
Принцип работы:
- Первичная аутентификация: Пользователь входит с логином/паролем.
- Выдача пары токенов: Сервер аутентификации возвращает:
{ "access_token": "eyJhbGciOiJIUzI1NiIs...", "refresh_token": "dGhpcyBpcyBhIHNlY3JldCByZWZyZXNoIHRva2Vu", "expires_in": 900 // Access token живёт 15 минут } - Использование access token: Клиент использует его для доступа к API. Он короткоживущий (минуты/часы).
- Обновление по истечении срока: Когда
access_tokenпротухает, клиент отправляетrefresh_tokenна специальный endpoint (например,POST /auth/refresh). - Выдача новой пары: Сервер проверяет
refresh_tokenи выдает новую паруaccess_tokenиrefresh_token.
Почему это безопасно?
- Минимизация риска: Короткая жизнь
access_tokenснижает ущерб в случае его утечки. - Контроль доступа:
Refresh_tokenможно отозвать на сервере (добавив в blacklist), немедленно прекратив доступ пользователя. - Безопасное хранение:
Refresh_tokenдолжен храниться максимально безопасно (например, в HttpOnly, Secure, SameSite cookie), чтобы быть недоступным для JavaScript (защита от XSS).