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

Что такое авторизация?

1.0 Junior🔥 171 комментариев
#Теория тестирования

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

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

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

Что такое авторизация?

Авторизация — это процесс определения, какие действия, ресурсы или данные разрешено выполнять или получать конкретному пользователю, приложению или системе после успешной аутентификации (подтверждения личности). Если аутентификация отвечает на вопрос "Кто вы?", то авторизация — "Что вам разрешено делать?". Это ключевой механизм управления доступом в информационной безопасности.

Основные концепции и модели авторизации

В авторизации используются несколько фундаментальных моделей и принципов:

  • Права доступа (Permissions): Конкретные разрешения на выполнение операций (например, "чтение", "запись", "удаление", "выполнение").
  • Роли (Roles): Группы прав, назначаемые пользователям. Пользователь получает все права, связанные с его ролью (например, "Администратор", "Редактор", "Гость").
  • Ресурсы (Resources): Объекты, к которым контролируется доступ (файлы, записи в базе данных, API-эндпоинты, страницы интерфейса).

Популярные модели контроля доступа:

  1. DAC (Discretionary Access Control — Произвольный контроль доступа): Владелец ресурса сам определяет, кто и как к нему может получить доступ (как в файловых системах Windows/Linux).
  2. RBAC (Role-Based Access Control — Ролевой контроль доступа): Наиболее распространённая модель. Доступ предоставляется на основе ролей пользователя в системе.
  3. ABAC (Attribute-Based Access Control — Контроль доступа на основе атрибутов): Более гибкая модель. Решение об доступе принимается на основе атрибутов пользователя (должность, отдел), ресурса (категория, метка) и условий окружения (время суток, IP-адрес). Например, "Менеджер из отдела продаж может редактировать контракты только в рабочее время".

Реализация и технологии

На практике авторизация реализуется с помощью различных протоколов и стандартов:

  • OAuth 2.0 / OpenID Connect: Современные стандарты для делегирования доступа. OAuth 2.0 выдает токены доступа (access tokens), которые приложение предъявляет API для доступа к данным от имени пользователя. OpenID Connect поверх OAuth добавляет функцию аутентификации, выдавая ID-токен.
    # Пример HTTP-запроса с токеном доступа в заголовке Authorization
    GET /api/v1/users/me HTTP/1.1
    Host: api.example.com
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    
  • JWT (JSON Web Token): Популярный формат компактных самодостаточных токенов, часто используемых для авторизации. Токен содержит закодированную полезную нагрузку (payload) с данными (например, user_id, roles, exp — срок действия), которая может быть проверена сервером благодаря цифровой подписи.
    // Пример декодированной payload части JWT
    {
      "sub": "1234567890",
      "name": "John Doe",
      "roles": ["editor", "viewer"],
      "iat": 1516239022,
      "exp": 1516242622
    }
    
  • Стандартные HTTP-механизмы: Базовые методы, такие как HTTP Basic Auth (логин/пароль в заголовке) или Cookie-based sessions (сессия, хранимая на сервере, с идентификатором в cookie браузера).

Значение для QA Automation

Для инженера по автоматизации тестирования понимание авторизации критически важно по нескольким причинам:

  • Тестирование сценариев доступа: Необходимо автоматизировать проверки, что пользователи с разными ролями имеют корректный доступ к функционалу.
    *   Проверка, что обычный пользователь НЕ может удалить запись администратора.
    *   Проверка, что API возвращает код `403 Forbidden` при попытке выполнить неразрешённое действие.
  • Работа с токенами: В автотестах необходимо корректно генерировать, передавать и обновлять токены доступа (OAuth, JWT) для эмуляции работы авторизованного пользователя.
    # Пример фрагмента автотеста на Python с использованием requests и JWT
    import requests
    
    def get_auth_token(username, password):
        auth_payload = {"username": username, "password": password}
        response = requests.post("https://api.example.com/auth", json=auth_payload)
        return response.json()["access_token"]
    
    def test_authorized_access():
        token = get_auth_token("test_user", "pass123")
        headers = {"Authorization": f"Bearer {token}"}
        response = requests.get("https://api.example.com/protected-data", headers=headers)
        assert response.status_code == 200
    
  • Тестирование безопасности: Автоматизация проверок на уязвимости, такие как IDOR (Insecure Direct Object Reference), когда злоумышленник может получить доступ к чужому ресурсу, подставив его идентификатор, или попыток эскалации привилегий.
  • Интеграционное и E2E-тестирование: Корректная настройка контекста авторизации (логин перед набором действий) в сквозных сценариях.

Заключение

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