Ответ
Refresh Token — это долгоживущий учетный токен, используемый в протоколах аутентификации (например, OAuth 2.0, OpenID Connect) для получения нового Access Token без повторного ввода пользовательских учетных данных.
Как это работает (поток OAuth 2.0):
- Пользователь входит в систему, и сервер аутентификации выдает пару токенов:
- Access Token (короткоживущий, например, 15 минут) — для доступа к защищенным ресурсам (API).
- Refresh Token (долгоживущий, например, 7 дней) — хранится безопасно на стороне клиента.
- Когда Access Token истекает, клиентское приложение отправляет Refresh Token на специальную конечную точку (
/token). - Сервер проверяет Refresh Token и, если он валентен, выдает новую пару Access и Refresh токенов.
Пример HTTP-запроса для обновления:
POST /oauth/token HTTP/1.1
Host: auth.server.com
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=abc123def456...&client_id=your_client_id
Ключевые характеристики и best practices:
- Безопасное хранение: Refresh Token должен храниться на стороне сервера (для веб-приложений) или в защищенном хранилище (Keychain/Keystore для мобильных приложений), но НИКОГДА не в браузере (например, localStorage).
- Отзыв (Revocation): Сервер должен иметь возможность отозвать скомпрометированные Refresh Tokens.
- Одноразовость: После использования Refresh Token для выдачи новой пары, старый Refresh Token часто аннулируется (реализация "ротации токенов").
- Узкая область действия (Scope): Refresh Token обычно имеет те же разрешения, что и исходный Access Token.
Зачем это нужно?
- Безопасность: Короткая жизнь Access Token минимизирует ущерб в случае его утечки.
- Удобство пользователя: Пользователь остается аутентифицированным долгое время без повторных логинов.
- Масштабируемость: Позволяет избежать частых проверок учетных данных в основной базе данных.