При использовании JWT, пользователь получает два вида токенов:
- Access токен: JWT, который идентифицирует и уполномочивает пользователя, предоставляя приложению необходимую информацию.
- Refresh токен: Токен произвольного формата, который используется для обновления access токена, когда срок его действия истекает.
Что такое токен доступа к API?
Токен доступа к API — уникальный идентификатор, который предоставляет конкретному пользователю доступ к API.
Отличие от ключа API в том, что токен содержит более подробную информацию о пользователе и его правах.
- Используется для авторизации приложения при запросе к API.
- Содержит уникальную информацию для идентификации пользователя.
Что такое claim в Токене?
Вы можете использовать одну из множества доступных библиотек для его декодирования или самостоятельно проверить его с помощью сайта jwt.io. Эти свойства JSON называются «claims (заявки)», и они представляют собой заявления о пользователе и самом токене.
Как найти bearer token?
Токен доступа (bearer token) хранится в заголовке Authorization.
- Получить bearer token можно в Личном кабинете разработчика:
- Перейдите на вкладку Мои приложения;
- Откройте Инструменты разработчика (Ctrl+Shift+I).
Сколько должен жить Refresh Token?
При использовании OAuth 2.0, срок действия идентификаторов может быть настроен:
- Authorization Code: 2 минуты
- Access Token: 60 минут
- Refresh Token: 180 дней
Refresh Token предназначен для получения нового Access Token после истечения срока его действия. Длительный срок действия Refresh Token позволяет не прибегать к авторизации пользователя каждый час.
В зависимости от стратегии безопасности, срок действия идентификаторов может быть изменен, например:
- Уменьшение срока действия Refresh Token для повышения безопасности
- Увеличение срока действия Access Token для улучшения удобства использования
Настройка сроков действия идентификаторов должна осуществляться с учетом баланса между безопасностью и удобством.
Что хранить в Refresh Token?
Рефреш токен на сервере — надежный сторож вашего доступа.
- Учет контроля доступа: сервер четко видит, кому дозволен вход.
- Предотвращение утечек: инвалидация украденных токенов гарантирует, что они не попадут в чужие руки.
Где лучше хранить Access и Refresh токены?
Оптимальное хранение Access и Refresh токенов Для надежного хранения токенов рекомендуется следующее: Refresh токен * Сохраняется исключительно в HTTPOnly-куки. Это защищает токен от доступа через сценарии или межсайтового скриптинга (XSS). Access токен * Краткий срок действия (например, несколько часов). * Передача по защищенному каналу связи (HTTPS) с установленным флагом `SameSite=Strict`. * Хранение в безопасной сессии сервера. * Регулярное обновление с использованием refresh токена. Ключевые преимущества * Усиленная безопасность: Предотвращение кражи и несанкционированного доступа к токенам. * Улучшение конфиденциальности: Ограничение раскрытия токенов в браузере. * Упрощенное управление: Автоматизированное обновление токенов, снижающее нагрузку на сервер. * Соответствие требованиям: Соблюдение отраслевых стандартов и лучших практик безопасности. Дополнительно * Рассмотрите использование local storage для хранения refresh токенов только в одностраничных приложениях (*SPA*). * Реализуйте механизмы ротации токенов для периодической смены ключей и снижения рисков безопасности. * Используйте ПО в качестве сервиса (PaaS) для управления токенами, обеспечения масштабируемости и безопасности.