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

Что такое токен?

1.0 Junior🔥 201 комментариев
#Клиент-серверная архитектура

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

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

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

Понятие токена в разработке ПО

Как QA с 10+ лет опыта, я часто работаю с токенами при тестировании API и аутентификации. Это многоаспектное понятие, которое имеет разные значения в зависимости от контекста.

Токен в контексте безопасности и аутентификации

Основное определение: Токен — это цифровое представление прав доступа или идентификации пользователя. Это строка данных, которая подтверждает, что пользователь прошёл аутентификацию и имеет право выполнять определённые действия.

Bearer Token (JWT)

Это наиболее распространённый тип в REST API:

  • Структура: Header.Payload.Signature
  • Header: содержит тип токена и алгоритм шифрования
  • Payload: данные пользователя (id, email, роль)
  • Signature: подпись для проверки подлинности

Пример использования в тестировании:

GET /api/v1/users/me
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Session Token

  • Создаётся при логине
  • Хранится на сервере
  • Отправляется в cookies
  • Более безопасен для веб-приложений

Refresh Token

  • Долгоживущий токен для получения нового access token
  • Используется для обновления сессии без повторного логина
  • Требует усиленной защиты

Токен в контексте программирования

Лексический токен

В компиляторах и интерпретаторах — минимальная единица синтаксиса:

  • Ключевые слова (if, while, function)
  • Идентификаторы (имена переменных, функций)
  • Операторы (+, -, ==)
  • Литералы (числа, строки)

CSRF Token

Для защиты от атак подделки запроса:

  • Уникальный токен на каждую форму
  • Валидируется на сервере
  • Обязателен для POST, PUT, DELETE запросов

При тестировании: Нужно убедиться, что сервер отвергает запросы без валидного CSRF токена.

Токен в контексте OAuth 2.0

Access Token:

  • Краткосрочный (обычно 15 минут)
  • Используется для доступа к защищённым ресурсам
  • Теряет валидность через определённый период

ID Token (OpenID Connect):

  • Содержит информацию о пользователе
  • Не используется для доступа к ресурсам

Тестирование работы с токенами

В своей практике я проверяю:

  1. Создание токена:

    • Токен выдаётся при успешной аутентификации
    • Неверные креденшалы не дают токен
  2. Валидация:

    • Просроченный токен отклоняется (401 Unauthorized)
    • Поддельный токен не работает
    • Отсутствие токена — доступ запрещён
  3. Безопасность:

    • Токен не содержит чувствительные данные
    • Подпись верна
    • Токен уникален для каждого пользователя
  4. Refresh механизм:

    • Старый токен обновляется на новый
    • Refresh token не утекает в логах
    • Logout инвалидирует токены

Практические примеры из моей работы

Сценарий 1: Тестирование API с JWT

  • Получаю токен через POST /auth/login
  • Использую токен в заголовке Authorization
  • Проверяю, что сервер отвергает истёкший токен

Сценарий 2: Безопасность

  • Проверяю, что токен зашифрован при передаче (HTTPS)
  • Убеждаюсь, что токен не логируется в plain text
  • Валидирую, что токен содержит только необходимые данные

Сценарий 3: Performance

  • Измеряю время генерации токена
  • Проверяю, что валидация токена не замедляет API

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