← Назад к вопросам

Что такое Refresh Token?

1.0 Junior🔥 161 комментариев
#Безопасность

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Refresh Token: Полное объяснение

Определение

Refresh Token — это долгоживущий токен, который используется для получения нового Access Token без необходимости повторной аутентификации пользователя. Это важный компонент OAuth 2.0 и современных систем аутентификации.

Как это работает

Процесс аутентификации:

  1. Первичная аутентификация — пользователь передаёт учетные данные (логин/пароль)
  2. Выдача токенов — сервер возвращает:
    • Access Token (короткоживущий, 15-60 мин)
    • Refresh Token (долгоживущий, дни/недели)
  3. Использование Access Token — клиент обращается к API с Access Token
  4. Истечение Access Token — когда токен истекает, клиент может:
    • Отправить Refresh Token для получения нового Access Token
    • Избежать повторной аутентификации

Различия Access Token и Refresh Token

ПараметрAccess TokenRefresh Token
НазначениеДоступ к ресурсамОбновление Access Token
Время жизни15-60 минутДни/недели
Отправляется с каждым запросомДаНет (только для refresh)
ХранениеПамять/sessionStorageSecure Cookie или localStorage
Область действияОграниченнаяНе имеет прямого доступа

Безопасность Refresh Token

Лучшие практики:

  1. Хранение в Secure Cookie с флагами: HttpOnly (защита от XSS), Secure (только HTTPS), SameSite (защита от CSRF)
  2. Проверка отозванности — поддерживать список отозванных токенов в Redis
  3. Ротация токенов — при каждом refresh выдавать новый Refresh Token
  4. Привязка к устройству — дополнительная проверка User-Agent или IP

Реальный пример процесса:

  1. Пользователь логинится → получает Access Token (15 мин) + Refresh Token (7 дней)
  2. Пользователь делает запрос с Access Token
  3. Access Token истекает
  4. Клиент отправляет Refresh Token
  5. Сервер проверяет Refresh Token, если валиден — выдаёт новый Access Token
  6. Процесс повторяется без необходимости повторного ввода пароля

Распространённые ошибки

  1. Хранение Refresh Token в localStorage — уязвимо для XSS
  2. Отсутствие проверки отозванности — невозможно logout
  3. Одинаковое время жизни для обоих токенов — неправильная архитектура
  4. Передача Refresh Token с каждым запросом — ненужная нагрузка
  5. Отсутствие ротации — если токен скомпрометирован, доступ открыт надолго

Заключение

Refresh Token — критический компонент безопасной аутентификации. Правильная реализация требует короткоживущих Access Tokens, долгоживущих Refresh Tokens, безопасного хранилища, проверки отозванности и ротации. Всё это обеспечивает баланс между удобством и безопасностью.