← Назад к вопросам

Где использовал авторизацию?

1.3 Junior🔥 243 комментариев
#Soft skills и карьера#Клиент-серверная архитектура

Комментарии (3)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Мой опыт работы с авторизацией в тестировании

В моей практике как QA Engineer, работа с различными системами авторизации и аутентификации была одним из ключевых направлений, поскольку это критически важный функционал для безопасности любого приложения. Я сталкивался с авторизацией в разных контекстах и на разных уровнях тестирования.

Типы авторизации, с которыми я работал

  1. Ролевая модель (RBAC - Role-Based Access Control)
    *   **Контекст:** Веб-приложения для бизнеса (CRM, ERP, внутренние порталы).
    *   **Что тестировал:** Проверял, что пользователи с ролью "Менеджер" видят кнопку "Создать отчет", а пользователи с ролью "Аналитик" — нет, но могут эти отчеты просматривать. Составлял матрицы доступа для всех ролей и функций системы.

  1. Авторизация на основе токенов (Token-Based)
    *   **Контекст:** Мобильные приложения и SPA (Single Page Applications).
    *   **Технологии:** **JWT (JSON Web Token)**, OAuth 2.0 (чаще для доступа к сторонним API, например, "Войти через Google/Facebook").
    *   **Что тестировал:**
        *   Жизненный цикл токена: получение, использование для доступа к API, обновление (refresh token), истечение срока действия.
        *   Безопасность: невозможность подмены токена, корректная обработка невалидных или просроченных токенов.
        *   Пример теста для API с JWT:

# 1. Получение токена (аутентификация)
curl -X POST https://api.example.com/login \
  -H "Content-Type: application/json" \
  -d '{"username":"testuser", "password":"Pass123"}' # Валидные учетные данные

# Ответ: {"access_token": "eyJhbGciOiJIUzI1NiIs...", "refresh_token": "def...", "expires_in": 3600}

# 2. Использование токена для доступа к защищенному ресурсу (авторизация)
curl -X GET https://api.example.com/api/v1/profile \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

# 3. Негативный тест: запрос с просроченным или несуществующим токеном
curl -X GET https://api.example.com/api/v1/profile \
  -H "Authorization: Bearer expired.token.here"
# Ожидаемый ответ: 401 Unauthorized
  1. Авторизация на уровне API (API Keys, HMAC)
    *   **Контекст:** Интеграции между микросервисами, партнерские API.
    *   **Что тестировал:** Проверял, что запросы без валидного API-ключа отклоняются, что ключи имеют ограничения (по количеству запросов, по IP-адресу), и что их можно отозвать.

  1. Авторизация на уровне пользовательских данных
    *   **Контекст:** Приложения, где пользователь имеет доступ только к своим данным (например, облачное хранилище, личный кабинет в банке).
    *   **Что тестировал:** Проверял, что пользователь с ID=101 не может через прямой доступ к API (`GET /api/documents/102`) получить документ, принадлежащий пользователю с ID=102. Это часто называют **Horizontal Authorization Bypass**.

Ключевые направления тестирования авторизации

  • Позитивные сценарии: Убедиться, что авторизованный пользователь получает доступ именно к тем ресурсам и операциям, которые ему разрешены.
  • Негативные сценарии (безопасность):
    *   **Обход авторизации:** Попытки получить доступ к административным эндпоинтам, подменив роль в JWT или параметр в URL.
    *   **IDOR (Insecure Direct Object Reference):** Манипуляция идентификаторами объектов в запросах для доступа к чужим данным.
    *   **Привилегированность сессии:** Проверка, что после понижения прав пользователя в системе (админ → пользователь) его старая сессия более не дает доступ к административным функциям.
  • Тестирование граничных случаев:
    *   Поведение системы при одновременной авторизации с одного аккаунта с нескольких устройств.
    *   Доступ к ресурсам после удаления роли у пользователя.
    *   Авторизация при истечении сессии/токена во время выполнения длительной операции.

В инструментарной части я активно использовал Postman (с коллекциями переменных для токенов), Swagger/OpenAPI для изучения требований к защищенным эндпоинтам, Fiddler/Charles Proxy для анализа и модификации сетевых запросов (например, для проверки уязвимостей), а также писал автотесты на Python (pytest) и Java (REST Assured) для регрессионной проверки сценариев авторизации.

Таким образом, работа с авторизацией — это всегда комплексный подход, включающий функциональное тестирование, тестирование безопасности и удобства пользователя. Понимание принципов работы различных механизмов авторизации позволяет не только проверять "работает ли кнопка", но и находить потенциально опасные уязвимости в логике доступа к данным приложения.

Где использовал авторизацию? | PrepBro