Перейти к основному содержимому
FreeOnlineTools Go
Русский
Объяснение

Что такое JWT? Полное объяснение веб-токенов JSON

Автор: FreeOnlineTools Team · Обновлено 2026-09-02

Быстрый ответ

JWT — строка с тремя Base64URL-кодированными частями, разделёнными точками: header.payload.signature. Header указывает алгоритм, payload содержит claims (user ID, roles, expiration), а signature доказывает подлинность. Используйте наш бесплатный JWT Decoder.

Введение

JWT (JSON Web Token) — компактный, URL-safe формат токена, определённый RFC 7519 для безопасной передачи информации между сторонами как JSON-объект. JWT широко используются для аутентификации в web-приложениях: после login server выдаёт JWT, который клиент включает в последующие запросы. JWT stateless —server не ищет токен в базе; токен сам содержит claims и signature.

Шаг за шагом

  1. Понять трехчастную структуру

    JWT состоит из трех частей: заголовок (алгоритм и тип), полезная нагрузка (утверждения) и подпись (доказывает целостность). Каждая часть закодирована в формате Base64URL и разделена точками: eyJhbGciOi...J9.eyJzdWIi...J9.signature. Первые две части может прочитать любой, у кого есть токен; только подпись требует секретного ключа.

  2. Изучите стандартные претензии

    Полезная нагрузка содержит претензии — утверждения о предмете. Стандартные утверждения: «sub» (идентификатор субъекта/пользователя), «iat» (выдается в отметку времени), «exp» (истечение срока действия), «nbf» (не раньше), «iss» (эмитент), «audi» (аудитория). Пользовательские утверждения могут включать роли, разрешения или любые другие данные.

  3. Понимание алгоритмов подписи

    JWT используют симметричную (HS256 — общий секрет) или асимметричную (RS256, ES256 — пара открытого/закрытого ключей) подпись. Подпись предотвращает подделку: изменение любой части токена делает подпись недействительной. Только владелец секретного/закрытого ключа может создавать действительные токены.

  4. Используйте JWT для аутентификации

    После входа в систему сервер создает JWT и отправляет его клиенту. Клиент включает JWT в заголовок авторизации (токен на предъявителя) для последующих запросов. Сервер проверяет подпись и срок действия — поиск в базе данных не требуется.

Примеры

JWT структура

Вход: Типичный JWT

Выход: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSIsImV4cCI6MTY5MzYxMjgwMH0.signature

Декодированный заголовок

Вход: Первая часть расшифрована

Выход: {"alg": "HS256", "typ": "JWT"}

Декодированная полезная нагрузка

Вход: Вторая часть расшифрована

Выход: {"sub": "user1", "name": "Alice", "iat": 1693526400, "exp": 1693612800}

Распространенные проблемы

  • Декодирование или проверка: декодирование JWT (чтение его содержимого) НЕ доказывает его подлинность. Всегда проверяйте подпись на стороне сервера с помощью секретного ключа, прежде чем доверять утверждениям.
  • Хранение JWT в localStorage — это делает их доступными для JavaScript и уязвимыми для XSS-атак. Храните файлы cookie httpOnly для большей безопасности.
  • Долговечные токены — если токен украден, он остается действительным до истечения срока действия. Используйте токены доступа с коротким сроком действия (15–60 минут) и токены обновления для длительных сеансов.
  • Конфиденциальные данные в полезных данных — полезные данные доступны для чтения любому, у кого есть токен (это Base64, не зашифровано). Никогда не помещайте пароли, кредитные карты или секреты в полезные данные.

Советы

  • Всегда проверяйте подпись JWT на стороне сервера, прежде чем доверять каким-либо утверждениям — декодирование само по себе не является аутентификацией.
  • Используйте токены доступа с коротким сроком действия (15–60 минут) с токенами обновления для длительных сеансов, чтобы минимизировать ущерб от кражи токенов.
  • Храните JWT в файлах cookie httpOnly, Secure и SameSite, а не в localStorage, чтобы предотвратить XSS-атаки.
  • Используйте наш декодер JWT для проверки содержимого токена для отладки — ваш токен никогда не покидает ваш браузер.

Сопутствующие инструменты

Связанные руководства

Ссылки