Техническое задание: Модернизация системы аутентификации
Требуется выполнить рефакторинг текущей системы авторизации, основанной на "липких" сессиях, и перейти на современную схему с использованием JWT (JSON Web Tokens).
Основные цели
- Повышение безопасности системы аутентификации.
- Внедрение механизма бесшовного обновления токенов для пользователя.
- Обеспечение контроля и управления активными сессиями.
Ключевые требования к реализации
Архитектура токенов
- Внедрить два типа токенов:
- Access Token: Короткоживущий (например, 15-30 минут), используется для доступа к защищенным ресурсам API.
- Refresh Token: Долгоживущий (например, несколько дней или недель), используется исключительно для получения новой пары токенов.
- Реализовать ротацию Refresh Token: при каждом использовании refresh-токена для получения новой пары, старый refresh-токен должен становиться недействительным, а выдаваться новый.
Безопасность и управление
- Реализовать хранение "семейств" (families) refresh-токенов, привязанных к устройству или сессии пользователя.
- Обеспечить возможность отзыва (revoke) всех токенов конкретного пользователя или конкретного семейства токенов.
- Реализовать защиту от повторного использования (replay attack) refresh-токенов. Система должна отслеживать, что каждый refresh-токен используется только один раз.
- Настроить процесс безопасного обновления токенов по истечении срока действия access-токена с помощью валидного refresh-токена.
Технические аспекты
- Обеспечить корректную обработку ошибок (просроченный access, невалидный или отозванный refresh).
- Продумать стратегию хранения refresh-токенов на стороне сервера (например, в базе данных или специализированном хранилище).
- Документировать изменения в API и механизме аутентификации.