Как работает процесс авторизации через API?

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

Ответ

Авторизация через API — это процесс проверки подлинности клиента (приложения) перед предоставлением доступа к защищенным ресурсам. Наиболее распространен подход на основе токенов (Token-based), например, с использованием JWT (JSON Web Token).

Типичный flow авторизации:

  1. Запрос аутентификации: Клиент отправляет POST-запрос с учетными данными на эндпоинт авторизации (например, /api/v1/auth/login).

    POST /api/v1/auth/login HTTP/1.1
    Content-Type: application/json
    
    {
        "username": "user@example.com",
        "password": "MySecretPassword"
    }
  2. Верификация и генерация токена: Сервер проверяет логин и пароль. При успехе создает подписанный JWT-токен, содержащий payload (например, user_id, roles, exp — срок действия).
  3. Отправка токена клиенту: Сервер возвращает токен в теле ответа.
    {
        "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
        "token_type": "Bearer",
        "expires_in": 3600
    }
  4. Использование токена: Клиент сохраняет токен и включает его в заголовок Authorization всех последующих запросов к защищенным эндпоинтам.
    GET /api/v1/users/me HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  5. Валидация токена сервером: При каждом запросе сервер проверяет подпись и срок действия токена. Если токен валиден, запрос обрабатывается.

Основные методы аутентификации в API:

  • Bearer Token (JWT): Стандарт для современных RESTful API.
  • OAuth 2.0: Протокол для делегированного доступа, используемый для интеграции со сторонними сервисами.
  • API Keys: Простой ключ, передаваемый в заголовке или параметре запроса, часто для доступа к публичным API.
  • Basic Auth: Кодированные в Base64 логин и пароль в заголовке (менее безопасно, используется реже).

Важно: Токены доступа (access tokens) обычно имеют короткий срок жизни. Для их обновления без повторного ввода пароля используются refresh-токены.