Ответ
Есть практический опыт тестирования механизмов аутентификации на основе токенов: JWT, OAuth 2.0, API-ключи, защита от CSRF.
Ключевые аспекты тестирования:
- Жизненный цикл токена: получение (login), использование (API calls), обновление (refresh token), отзыв (revoke).
- Валидация: проверка подписи (signature), срока действия (exp), аудитории (aud), издателя (iss).
- Безопасность: передача токена только по HTTPS, хранение (не в localStorage для веба), проверка прав доступа (scopes, roles).
- Обработка ошибок: корректные HTTP-коды (401 Unauthorized, 403 Forbidden) при истечении или невалидном токене.
Рабочий процесс в Postman:
- Запрос на
/auth/loginдля получения JWT. - Автоматическое сохранение токена в переменные окружения.
- Использование токена в заголовках последующих запросов:
Authorization: Bearer <token>.
Пример валидации JWT на Python (библиотека PyJWT):
import jwt
from jwt.exceptions import InvalidTokenError
def validate_jwt(token: str, secret: str) -> bool:
"""Проверяет валидность и срок действия JWT."""
try:
# Декодирование и верификация подписи и exp-claims
payload = jwt.decode(
token,
secret,
algorithms=["HS256"],
options={"require": ["exp"]}
)
return True
except (jwt.ExpiredSignatureError, InvalidTokenError):
# Токен просрочен или невалиден
return False
# Использование
is_valid = validate_jwt(user_token, "SECRET_KEY")
Тестирование включает негативные сценарии: подмена токена, атаки на повторное использование, проверка refresh_token.