Ответ
На последнем проекте авторизация в REST API была реализована по схеме OAuth 2.0 с использованием JWT (JSON Web Tokens).
С точки зрения тестировщика, моя работа включала:
-
Тестирование сценариев аутентификации:
- Успешный логин с корректными данными.
- Неуспешный логин с неверным паролем/логином (проверка кодов ответа 401, сообщений об ошибках).
- Попытка доступа к защищенным эндпоинтам без токена (ожидаемый ответ 403 Forbidden или 401 Unauthorized).
-
Работа с токенами:
- Access Token: Жил 15 минут. Тестировал истечение срока его действия — после этого запросы к API должны возвращать 401, и клиент должен использовать refresh token для получения нового.
- Refresh Token: Жил 7 дней. Тестировал сценарий его повторного использования, отзыва и попытки использования после истечения срока.
-
Автоматизация тестов: Для API-тестов использовал
pytestи библиотекуrequestsв Python. Токен получал один раз в фикстуре и переиспользовал в рамках тестовой сессии.import pytest import requests @pytest.fixture(scope="session") def auth_token(): """Фикстура для получения токена один раз на все тесты.""" login_url = "https://api.project.com/auth/login" creds = {"username": "test_user", "password": "test_pass"} resp = requests.post(login_url, json=creds) resp.raise_for_status() return resp.json()["access_token"] def test_get_user_profile(auth_token): headers = {"Authorization": f"Bearer {auth_token}"} resp = requests.get("https://api.project.com/user/profile", headers=headers) assert resp.status_code == 200 -
Тестирование безопасности: Проверял уязвимости, такие как попытка подменить алгоритм подписи JWT на
none, использование просроченного или украденного токена, а также корректную обработку некорректно сформированных токенов. -
UI-тестирование: В автотестах на Playwright/Selenium авторизация также выполнялась через API (получение токена и установка его в localStorage или cookies), что было значительно быстрее, чем прохождение полной формы логина в UI.