30-дневный пробный период закончился
Если вы владелец этого сайта, купите Netcat Standard+, чтобы получить полнофункциональную версию и техническую поддержку на год.
Какую задачу вы хотите решить
с нашей помощью?

Выберите вариант, наиболее близкий к вашему запросу. Если хотите описать задачу подробно — сможете сделать это чуть позже. Выберите вариант, наиболее близкий к вашему запросу.
Если хотите описать задачу подробно — сможете сделать это чуть позже.

Какой планируемый бюджет для
вашего проекта?

Мы предложим вам лучшее диджитал-решение в соответствии
с вашими финансовыми ожиданиями.

Отлично, остался последний шаг

Оставьте свои контакты и менеджер свяжется с вами
в течение рабочего дня

Назад
Ваша заявка успешно отправлена!

Менеджер свяжется с вами в течение рабочего дня.

Декор

JWT (JSON Web Token)

Словарь

JWT (JSON Web Token, произносится как «джот») — это открытый стандарт (RFC 7519) для безопасной передачи информации между сторонами в виде JSON-объекта. JWT используется для аутентификации и авторизации пользователей в веб-приложениях и API, позволяя передавать данные о пользователе без необходимости хранить сессию на сервере.

Структура JWT

JWT состоит из трёх частей, разделённых точками:

  1. Header (заголовок) — содержит тип токена и алгоритм шифрования (например, HMAC SHA256 или RSA).
  2. Payload (полезная нагрузка) — содержит данные (claims), например, идентификатор пользователя, роль, время истечения токена.
  3. Signature (подпись) — создаётся путём шифрования закодированных header и payload с использованием секретного ключа. Это гарантирует, что токен не был изменён.

Пример JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

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

  1. Пользователь вводит логин и пароль.
  2. Сервер проверяет данные и создаёт JWT, подписывая его секретным ключом.
  3. Токен отправляется клиенту (обычно в теле ответа или заголовке).
  4. Клиент сохраняет токен (в localStorage, cookie или памяти) и отправляет его с каждым запросом в заголовке Authorization: Bearer <token>.
  5. Сервер проверяет подпись токена и извлекает данные из payload для авторизации.

Виды JWT

  • Access Token — короткий токен для доступа к ресурсам, действует ограниченное время.
  • Refresh Token — длинный токен для обновления access token без повторной аутентификации.
  • ID Token — содержит информацию о пользователе, используется в OAuth 2.0 и OpenID Connect.

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

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

Недостатки

  • Размер — JWT больше, чем обычные сессионные токены, что увеличивает размер запросов.
  • Невозможность отзыва — если токен украден, его нельзя отозвать до истечения срока действия (без дополнительных механизмов).
  • Безопасность данных — не следует хранить чувствительные данные в payload, так как они только кодируются, а не шифруются.
  • Сложность управления — требуется правильная настройка срока действия, алгоритмов шифрования и хранения ключей.

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

  • Аутентификация в веб-приложениях и мобильных приложениях.
  • Авторизация API (REST, GraphQL).
  • Однократный вход (SSO) между сервисами.
  • Передача данных между микросервисами.
  • Верификация email и сброс пароля.

Техническая реализация

JWT создаётся и проверяется с помощью библиотек для различных языков программирования:

  • Node.js: jsonwebtoken, jose
  • Python: PyJWT, python-jose
  • PHP: firebase/php-jwt, lcobucci/jwt
  • Java: jjwt, auth0-java-jwt

Пример создания JWT на Node.js:

const jwt = require('jsonwebtoken');
const token = jwt.sign({ userId: 123, role: 'admin' }, 'secret-key', { expiresIn: '1h' });

Пример проверки JWT:

const decoded = jwt.verify(token, 'secret-key');

Безопасность

  • Используйте HTTPS для передачи токенов.
  • Храните секретные ключи в защищённом месте (environment variables, vault).
  • Устанавливайте короткий срок действия access token.
  • Реализуйте механизм отзыва токенов (blacklist, short-lived tokens).
  • Не храните чувствительные данные в payload.