Какие существуют способы передачи токена аутентификации в HTTP-запросе?

«Какие существуют способы передачи токена аутентификации в HTTP-запросе?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Токен доступа обычно передается в HTTP-запросе одним из следующих способов, каждый из которых имеет свои особенности применения и уровень безопасности.

1. В заголовке Authorization (Наиболее распространенный и рекомендуемый способ) Чаще всего используется схема Bearer.

GET /api/user/profile HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

2. В cookie (Для веб-приложений) Сервер устанавливает токен в cookie, который браузер автоматически отправляет с каждым запросом.

GET /dashboard HTTP/1.1
Host: example.com
Cookie: session_token=abc123def456; HttpOnly; Secure
  • Плюсы: Удобство для браузерных SPA.
  • Минусы: Риск CSRF-атак (требует дополнительных мер).

3. В теле запроса (Body) Используется реже, обычно для специфичных потоков (например, OAuth 2.0).

{
  "grant_type": "refresh_token",
  "refresh_token": "abc123...",
  "client_id": "your_client_id"
}

4. В параметре URL (Query Parameter) — НЕ РЕКОМЕНДУЕТСЯ

GET /api/data?access_token=abc123 HTTP/1.1
  • Критический недостаток: Токен остается в логах сервера, истории браузера и реферерах, что представляет угрозу безопасности.

Best Practice: Для API предпочтительно использовать заголовок Authorization: Bearer <token>. Для веб-приложений, работающих в браузере, часто применяется комбинация HttpOnly/Secure cookies для хранения токена и CSRF-токенов для защиты.