Ответ
Да, работал с различными типами токенов для аутентификации и авторизации в API.
Типы токенов и их тестирование:
-
JWT (JSON Web Token):
- Проверка структуры (header, payload, signature).
- Валидация срока действия (
expclaim). - Тестирование обновления токена (refresh tokens).
# Пример теста с истекшим JWT import requests import time import jwt
Генерация просроченного токена (для теста)
expired_payload = {"user_id": 123, "exp": int(time.time()) - 3600} expired_token = jwt.encode(expired_payload, 'secret', algorithm='HS256')
headers = {"Authorization": f"Bearer {expired_token}"} response = requests.get("https://api.example.com/protected", headers=headers)
Ожидаем статус 401 Unauthorized
assert response.status_code == 401
- OAuth2 токены (access_token, refresh_token):
- Тестирование flow (Authorization Code, Client Credentials).
- Проверка scope токенов (доступ только к разрешенным ресурсам).
- API-ключи:
- Проверка передачи в headers (
X-API-Key) или query-параметрах. - Тестирование ротации и отзыва ключей.
- Проверка передачи в headers (
Ключевые аспекты тестирования:
- Безопасность: Токены не должны попадать в логи. Refresh tokens хранятся безопасно.
- Обработка ошибок: Корректные HTTP-статусы (401 при неверном токене, 403 при недостаточных правах).
- Инструменты: Использовал Postman (коллекции с pre-request scripts для автоматического получения токена), pytest.