Что такое токен авторизации и для чего он используется?

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

Ответ

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

Как это работает (поток OAuth 2.0):

  1. Пользователь вводит логин/пароль в клиенте.
  2. Клиент отправляет их на сервер аутентификации.
  3. Сервер проверяет данные и выдает Access Token (и часто Refresh Token).
  4. Клиент прикладывает токен к запросам в заголовке Authorization: Bearer <token>.
  5. Сервер ресурсов проверяет валидность токена и предоставляет доступ.

Пример JWT-токена (состоит из 3 частей, разделенных точками):

# Заголовок.Полезная нагрузка.Подпись
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0IiwidXNlcm5hbWUiOiJKb2huRG9lIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyNDI2MjJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Расшифровка полезной нагрузки (payload):

{
  "sub": "1234",
  "username": "JohnDoe",
  "role": "admin",
  "iat": 1516239022, // issued at (время выдачи)
  "exp": 1516242622  // expiration (срок действия)
}

Ключевые характеристики и best practices:

  • Короткий срок жизни (TTL): Access Token живет минуты/часы, чтобы минимизировать риски при компрометации.
  • Обновление: Long-lived Refresh Token используется для получения нового Access Token без повторного ввода пароля.
  • Безопасная передача: Только по HTTPS.
  • Хранение на клиенте: В HttpOnly куках (защита от XSS) или в защищенном хранилище (например, Secure Store в мобильных приложениях).
  • Отзыв токенов: Сервер должен иметь механизм инвалидации скомпрометированных токенов.