Ответ
Основным механизмом авторизации для REST API был JWT (JSON Web Token) по схеме Bearer Token.
Процесс аутентификации и авторизации:
- Логин: Клиент отправляет учетные данные (например, логин/пароль) на эндпоинт
/auth/login. - Выдача токенов: Сервер проверяет данные и возвращает два токена в теле ответа:
{ "access_token": "eyJhbGciOiJIUzI1NiIs...", "refresh_token": "eyJhbGciOiJIUzI1NiIs...", "expires_in": 3600 } - Доступ к API: Клиент использует
access_tokenдля вызова защищенных эндпоинтов, добавляя его в заголовокAuthorization:GET /api/users/me HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIs... - Валидация: Сервер проверяет подпись токена, его срок действия (
exp) и, при необходимости, claims (например, роль пользователя). - Обновление токена: По истечении срока
access_tokenклиент используетrefresh_tokenна эндпоинте/auth/refreshдля получения новой пары токенов без повторного ввода пароля.
Ключевые аспекты для тестирования:
- Позитивные сценарии: Успешный доступ к ресурсам с валидным токеном.
- Негативные сценарии:
- Запросы без заголовка
Authorization(должна быть ошибка401 Unauthorized). - Запросы с истекшим или невалидным токеном (ошибка
401или403 Forbidden). - Попытки доступа к ресурсам, не входящим в роль пользователя (ошибка
403). - Использование
refresh_tokenпосле его отзыва или истечения срока.
- Запросы без заголовка
- Безопасность: Токены должны передаваться по HTTPS,
refresh_tokenхранится безопасно на клиенте.