Что такое Refresh Token?
DOM и браузер
Refresh Token — это долгоживущий токен, который используется для получения нового access token, когда тот истёк, без повторного ввода логина и пароля.
Зачем нужен
Access token делают короткоживущим (минуты), чтобы при краже он быстро стал бесполезным. Но заставлять пользователя логиниться каждые 15 минут неудобно. Refresh token решает это: он живёт дольше (дни/недели) и позволяет молча обновить access token.
Как работает
- При логине сервер выдаёт access token (короткий) и refresh token (длинный).
- Клиент использует access token для запросов.
- Когда access token истёк — клиент шлёт refresh token на
/refresh. - Сервер проверяет его и выдаёт новый access token (и часто новый refresh — ротация).
POST /auth/refresh (refresh token в HttpOnly cookie)
→ { accessToken: 'новый' }Безопасность
- Хранить refresh token безопасно: HttpOnly cookie (не в localStorage — XSS).
- Ротация — при каждом обновлении выдавать новый refresh, старый инвалидировать.
- Отзыв — сервер хранит/проверяет refresh токены, может их отозвать (в отличие от stateless access token).
Access token против refresh token
- Access — короткий, для доступа к API, шлётся с каждым запросом.
- Refresh — длинный, только для получения нового access, хранится защищённо.
Коротко для собеседования
Refresh token — долгоживущий токен для получения нового короткого access token без повторного логина. Access делают коротким для безопасности, refresh хранят в HttpOnly cookie, применяют ротацию и могут отзывать на сервере. Access — для API, refresh — только для обновления.