Junior
51
questionbank

Что такое JWT (JSON Web Token)?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

JSON Web Token (JWT) — это компактный, безопасный для URL-адресов способ передачи данных между сторонами в формате JSON.

Принципы работы:

  • Токен состоит из трех частей, разделенных точками (.): header.payload.signature.

  • Header (Заголовок): Содержит метаинформацию о токене, такую как тип токена (JWT) и используемый алгоритм подписи (например, HS256, RS256).

    json
  • Payload (Нагрузка): Содержит "claims" - утверждения или информацию, которую мы хотим передать. Бывает нескольких типов:

    • Registered claims: Зарезервированные, но опциональные Claims, такие как iss (издатель), exp (срок действия), sub (тема).
    • Public claims: Определяются для публичного использования, должны быть зарегистрированы в IANA JSON Web Token Registry или быть URI, содержащим пространство имен, защищенное от коллизий.
    • Private claims: Произвольные утверждения, согласованные между сторонами.
    json
  • Signature (Подпись): Создается путем комбинирования кодированных заголовка и нагрузки с использованием секрета и алгоритма, указанного в заголовке. Это обеспечивает целостность токена - если кто-то изменит заголовок или нагрузку, подпись будет недействительной.

    python

Применение:

  • Авторизация: Сервер выдает токен пользователю после успешной аутентификации. Пользователь отправляет этот токен с каждым запросом. Сервер проверяет валидность токена и разрешает доступ к ресурсам.
  • Обмен информацией: Безопасная передача небольших объемов данных между различными сервисами.

Преимущества:

  • Компактность: Меньше данных для передачи по сравнению с XML.
  • Самодостаточность: В токене уже содержится необходимая информация о пользователе, что уменьшает необходимость обращаться к базе данных при каждом запросе.
  • Stateless: Серверу не нужно хранить информацию о сессии на своей стороне.
  • Криптографическая подпись: Обеспечивает целостность данных.

Недостатки:

  • Невозможно отозвать токен: После выдачи токен действует до истечения срока его действия, если не реализован механизм черных списков.
  • Хранение секрета: Секретный ключ должен храниться безопасно.
  • Размер: С ростом объема данных в payload увеличивается размер токена.