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

Какой заголовок используется для авторизации?

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

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

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

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

Заголовок HTTP Authorization

Для авторизации в HTTP-запросах основным и стандартным заголовком является Authorization.

Детальное объяснение

Заголовок Authorization содержит учётные данные (credentials) для аутентификации пользователя или клиента у ресурса (сервера). Его структура обычно выглядит следующим образом:

Authorization: <тип схемы> <учётные данные>

1. Схемы авторизации (Authorization Schemes)

Тип схемы определяет формат и метод передачи учётных данных. Наиболее распространённые схемы:

  • Bearer Token (наиболее популярна в современных REST API и микросеривисах):
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    
    Здесь после ключевого слова `Bearer` передаётся криптографический токен, обычно **JWT (JSON Web Token)**. Сервер проверяет валидность и подпись этого токена.

  • Basic (Базовая аутентификация):
    Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
    
    Учётные данные — это строка `username:password`, закодированная в **формате Base64**. Этот метод считается **небезопасным** при использовании без HTTPS, так как пароль легко декодируется.

  • Digest (Дайджест-аутентификация):
    Authorization: Digest username="user", realm="test", nonce="...", uri="/api", response="..."
    
    Более безопасная альтернатива Basic, использующая **хеширование (MD5, SHA)** для передачи пароля, что предотвращает его перехват в открытом виде.

  • API Key:
    Authorization: ApiKey 1234567890abcdef
    
    Или иногда API-ключ передаётся в других заголовках, например `X-API-Key`. Схема `ApiKey` не является официальным стандартом, но широко используется.

  • Другие схемы: OAuth, AWS4-HMAC-SHA256 (для AWS), NTLM и т.д.

2. Практическое использование в QA Automation

Как автотестировщик, вы будете сталкиваться с этим заголовком постоянно при автоматизации API-тестов.

Пример на Python (с использованием библиотеки requests):

import requests

# 1. Использование Bearer Token (JWT)
def test_with_bearer_token():
    token = "your_jwt_token_here"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    response = requests.get("https://api.example.com/protected", headers=headers)
    print(response.status_code)
    print(response.json())

# 2. Использование Basic Auth (requests умеет это упрощать)
def test_with_basic_auth():
    response = requests.get(
        "https://api.example.com/data",
        auth=("username", "password")  # Библиотека сама создаст корректный заголовок
    )
    print(response.status_code)

# 3. Явная передача API Key в заголовке
def test_with_api_key():
    api_key = "12345-abcde"
    headers = {"Authorization": f"ApiKey {api_key}"}
    response = requests.post("https://api.example.com/items", headers=headers, json={"name": "item"})
    assert response.status_code == 201

Пример на JavaScript (Node.js с использованием axios):

const axios = require('axios');

async function testSecureEndpoint() {
    const token = 'your_jwt_token_here';
    try {
        const response = await axios.get('https://api.example.com/user', {
            headers: {
                'Authorization': `Bearer ${token}`
            }
        });
        console.log(response.data);
    } catch (error) {
        console.error('Auth failed:', error.response.status);
    }
}

3. Ключевые моменты для QA Automation Engineer

  • Извлечение токена: Часто первый шаг в тестовом наборе — вызов эндпоинта /login для получения Bearer Token, который затем используется в заголовках Authorization для последующих запросов.
  • Безопасное хранение: Учётные данные и токены никогда не должны хардкодиться в скриптах. Используйте:
    *   Переменные окружения (`os.environ` в Python, `process.env` в Node.js).
    *   Специализированные vault-хранилища (HashiCorp Vault, AWS Secrets Manager).
    *   Зашифрованные конфигурационные файлы.
  • Тестирование негативных сценариев: Обязательно тестируйте случаи с:
    *   Отсутствующим заголовком `Authorization`.
    *   Неверным или просроченным токеном.
    *   Некорректным форматом заголовка.
    *   Отозванными учётными данными.
  • Анализ в инструментах: При отладке используйте инструменты вроде Postman или Fiddler, где вы явно видите и можете редактировать заголовок Authorization для каждого запроса.

4. Альтернативные места передачи учётных данных

Иногда, в зависимости от спецификации API, авторизационные данные могут передаваться иначе, но заголовок Authorization является стандартом де-факто:

  • Параметры запроса (query string): https://api.com/data?api_key=12345 (менее безопасно, так как ключ попадает в логи).
  • Пользовательские заголовки: X-API-Key: 12345.
  • Cookies: Для сессионной аутентификации после входа.

Вывод: Для успешной автоматизации тестирования защищённых API необходимо досконально понимать структуру и принципы работы заголовка Authorization, а также уметь его корректно формировать и передавать в рамках выбранного стека технологий (язык программирования, HTTP-клиент).

Какой заголовок используется для авторизации? | PrepBro