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

Какой Header отвечает за авторизацию?

1.7 Middle🔥 201 комментариев
#API тестирование#Сети и протоколы

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

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

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

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

В веб-разработке и API тестировании для авторизации чаще всего используется заголовок Authorization. Однако в зависимости от механизма аутентификации, его значение и формат могут различаться. Помимо него, в некоторых сценариях могут применяться и другие заголовки.

1. Стандартный заголовок Authorization

Это основной заголовок, определённый в стандарте HTTP/1.1 (RFC 7235). Его значение состоит из типа аутентификации и самих учётных данных. Наиболее распространённые схемы:

  • Bearer Token (OAuth 2.0 / JWT): Самый частый вариант в современных REST API.

    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    
  • Basic Authentication: Использует логин и пароль в кодировке Base64.

    Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
    
  • Digest Authentication: Более безопасная схема, чем Basic, использующая хэши.

  • API Key: Иногда ключ передаётся в этой схеме, хотя для ключей чаще используют отдельные заголовки.

    Authorization: ApiKey abc123def456
    

2. Другие заголовки, используемые для авторизации и аутентификации

Иногда учётные данные передаются в специализированных заголовках, особенно в случаях с API Keys или кастомными схемами:

  • X-API-Key или Api-Key: Прямая передача API-ключа.

    X-API-Key: abc123def456ghi789
    
  • Cookie: При использовании сессий на основе кук (например, в традиционных веб-приложениях), токен или идентификатор сессии (sessionId) передаётся в этом заголовке.

    Cookie: sessionId=abc123session; auth_token=xyz789token
    

Практическое применение в QA Automation

Как инженер по автоматизации тестирования, я постоянно работаю с этими заголовками:

  1. Конфигурация клиента API: При инициализации клиента (например, в Axios, Requests, RestAssured) заголовок Authorization добавляется глобально для всех запросов.

    // Пример на JavaScript (Axios)
    const apiClient = axios.create({
        baseURL: 'https://api.example.com',
        headers: { 'Authorization': `Bearer ${process.env.ACCESS_TOKEN}` }
    });
    
  2. Гибкость в тестах: В негативных сценариях я модифицирую или удаляю этот заголовок для проверки ответов на неавторизованные запросы (коды 401 Unauthorized или 403 Forbidden).

    # Пример на Python (requests)
    import requests
    
    # Позитивный сценарий
    headers = {'Authorization': 'Bearer valid_token'}
    resp_ok = requests.get('/secure-data', headers=headers)
    
    # Негативный сценарий: тест на отсутствие токена
    resp_unauth = requests.get('/secure-data', headers={})  # Отправка без заголовка
    assert resp_unauth.status_code == 401
    
  3. Работа с несколькими типами аутентификации: В проектах может быть несколько микросервисов с разными схемами. Автотесты должны корректно формировать заголовок для каждого endpoint. Например, один сервис использует JWT, а другой — Basic Auth для внутренней коммуникации.

  4. Безопасность: Важно никогда не хардкодить реальные токены или ключи в коде тестов. Я использую переменные окружения или секреты из CI/CD систем (например, GitHub Secrets, GitLab CI Variables), подставляя их значения на этапе запуска тестов.

Важные нюансы

  • WWW-Authenticate: Это ответный заголовок от сервера. Он отправляется вместе с кодом 401 и указывает клиенту, какие схемы аутентификации поддерживаются защищённым ресурсом (например, WWW-Authenticate: Bearer realm="api").
  • Различие между 401 Unauthorized (отсутствие или невалидность учётных данных) и 403 Forbidden (учётные данные валидны, но прав доступа недостаточно) критично для написания корректных проверок.
  • В специфических протоколах (например, GraphQL) авторизация также обычно осуществляется через стандартный HTTP-заголовок Authorization, который задаётся при отправке запроса на GraphQL endpoint.

Вывод для собеседования: Основным и стандартизированным заголовком является Authorization, а его конкретный формат (Bearer, Basic и др.) определяется выбранной в проекте схемой аутентификации. Понимание этого позволяет QA Automation инженеру правильно конфигурировать тестовые фреймворки, эмулировать поведение реальных клиентов и покрывать тестами как позитивные, так и негативные сценарии безопасности.

Какой Header отвечает за авторизацию? | PrepBro