calcal.ru
Инструмент для разработчиков

JWT декодер онлайн

Декодируйте и анализируйте JSON Web Token прямо в браузере. Просмотр header, payload и signature с русскоязычными пояснениями, проверка срока действия и расшифровка алгоритма подписи.

RFC 7519
Стандарт
Открытый стандарт IETF для JWT
10+
Алгоритмов
HS256, RS256, ES256, EdDSA и другие
7
Стандартных claims
iss, sub, aud, exp, nbf, iat, jti
100%
В браузере
Токен не покидает ваш компьютер

Что такое JWT

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

🔴

Header (заголовок)

Первая часть токена. Содержит метаданные: тип токена (обычно JWT) и алгоритм подписи (HS256, RS256, ES256 и др.). Кодируется в Base64URL. Определяет, как именно будет проверяться подпись токена.

🟣

Payload (полезная нагрузка)

Вторая часть — тело токена с набором утверждений (claims). Содержит информацию о пользователе, правах доступа, времени жизни и другие данные. Payload не зашифрован — любой может его прочитать, поэтому нельзя хранить в нём секреты.

🔵

Signature (подпись)

Третья часть — криптографическая подпись. Создаётся путём хеширования header и payload с секретным ключом. Позволяет серверу убедиться, что токен не был подделан или изменён после выпуска. Без ключа подпись невозможно сгенерировать.

Где применяется JWT декодер

Инструмент незаменим для разработчиков, тестировщиков и DevOps-инженеров, работающих с токенами авторизации.

🐛

Отладка API

Быстрый просмотр содержимого токена при отладке запросов к REST API и GraphQL. Понимание, какие данные передаются в Authorization-заголовке и какие права имеет пользователь.

🔒

Аудит безопасности

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

🏗

Разработка OAuth/OIDC

Инспекция id_token и access_token при реализации OAuth 2.0 и OpenID Connect. Проверка корректности claims, аудитории и издателя перед выпуском в продакшен.

🧪

Тестирование

Верификация структуры и содержимого JWT при ручном и автоматизированном тестировании. Проверка корректности ролей, разрешений и сроков действия в различных тестовых сценариях.

📚

Обучение

Наглядное изучение структуры JWT для студентов и начинающих разработчиков. Понимание принципов работы токенов на реальных примерах с русскоязычными пояснениями к каждому полю.

🔄

Интеграция микросервисов

Диагностика проблем при передаче токенов между микросервисами. Проверка совместимости алгоритмов подписи, валидация claims и анализ цепочки доверия.

Структура JWT/ техническое руководство

JWT состоит из трёх частей, разделённых точками: header.payload.signature. Каждая часть кодируется в Base64URL — вариант Base64, безопасный для использования в URL и HTTP-заголовках.

Алгоритмы подписи (Header.alg)

Алгоритм определяет способ создания и проверки подписи. Выбор зависит от архитектуры: симметричные (HMAC) проще, но требуют общий секрет; асимметричные (RSA, ECDSA) позволяют разделить создание и проверку токена.

HMAC (HS256/384/512)

Симметричный. Один секретный ключ для подписи и проверки. Подходит для монолитных приложений.

RSA (RS256/384/512)

Асимметричный. Приватный ключ подписывает, публичный проверяет. Идеален для микросервисов и OIDC.

ECDSA (ES256/384/512)

Асимметричный на эллиптических кривых. Короткие ключи при высокой стойкости. Компактные подписи.

Стандартные claims (RFC 7519)

Зарезервированные имена полей в payload. Все необязательны, но их использование рекомендуется для совместимости и безопасности.

issIssuer (издатель)Идентификатор сервиса, выпустившего токен. Обычно URL.
subSubject (субъект)ID пользователя или сущности, для которой выпущен токен.
audAudience (аудитория)Сервис или сервисы, для которых предназначен токен.
expExpiration (истечение)Unix timestamp, после которого токен недействителен.
nbfNot Before (не раньше)Unix timestamp, до которого токен нельзя использовать.
iatIssued At (создан)Unix timestamp создания токена.
jtiJWT ID (идентификатор)Уникальный ID токена для предотвращения replay-атак.

Формула подписи

Подпись создаётся по формуле, которая гарантирует, что ни header, ни payload не были изменены после создания токена.

HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

Важно: Payload JWT не зашифрован, а лишь закодирован в Base64URL. Любой может декодировать и прочитать содержимое. Никогда не помещайте пароли и секреты внутрь JWT.

Безопасность: наш декодер работает полностью в браузере. Ваш токен не отправляется ни на какие серверы и не покидает ваш компьютер.

JWT vs сессии на сервере

Два основных подхода к авторизации в веб-приложениях. У каждого свои сильные стороны и ограничения, и выбор зависит от архитектуры проекта.

🎫

JWT-токены

stateless-авторизация
  • + Не требуют хранилища на сервере
  • + Легко масштабируются горизонтально
  • + Работают между разными доменами (CORS)
  • + Подходят для мобильных приложений и SPA
  • - Невозможно отозвать до истечения exp
  • - Увеличивают размер каждого HTTP-запроса
  • - Требуют отдельного механизма refresh
🗄

Серверные сессии

stateful-авторизация
  • + Мгновенный отзыв при logout
  • + Маленький cookie (только Session ID)
  • + Данные хранятся на сервере, клиент не видит
  • + Проще реализация для монолита
  • - Требуют хранилище (Redis, БД)
  • - Сложнее масштабировать (sticky sessions)
  • - Проблемы с CORS и мобильными клиентами

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

Практические рекомендации по безопасному использованию JWT-токенов в ваших приложениях. Следуйте этим правилам, чтобы избежать типичных уязвимостей.

1Не храните секреты в payload

Payload JWT кодируется в Base64URL, но не шифруется. Любой, кто перехватит токен, может прочитать его содержимое. Никогда не помещайте в JWT пароли, номера кредитных карт или другие конфиденциальные данные. Если нужна конфиденциальность, используйте JWE (JSON Web Encryption).

2Всегда проверяйте подпись

Не доверяйте payload без верификации подписи. Проверяйте алгоритм (alg) из header перед валидацией — атака «algorithm confusion» подменяет RS256 на HS256, используя публичный ключ как секрет HMAC. Используйте whitelist разрешённых алгоритмов.

3Устанавливайте короткий exp

Время жизни access-токена должно быть коротким (5-15 минут). Используйте схему access + refresh token: короткоживущий access для запросов и долгоживущий refresh для получения нового access. Это минимизирует ущерб при компрометации токена.

4Безопасное хранение на клиенте

Храните JWT в httpOnly cookie (недоступен для JavaScript, защита от XSS) с флагами Secure и SameSite=Strict. Избегайте localStorage — он уязвим для XSS-атак. Для SPA рассмотрите хеширование в сочетании с CSRF-токенами.

5Проверяйте iss и aud

Всегда валидируйте claims iss (издатель) и aud (аудитория) при проверке токена. Это предотвращает использование токена, выпущенного для другого сервиса. Особенно критично в мультитенантных системах и при работе с внешними провайдерами OAuth.

6Используйте надёжные ключи

Для HMAC (HS256) длина секрета должна быть не менее 256 бит (32 байта). Используйте криптографически стойкие генераторы. Для RSA — минимум 2048 бит. Регулярно ротируйте ключи с помощью JWK Set (JWKS) и поля kid в header.

Советы по работе с JWT

Практические рекомендации, которые помогут эффективно использовать JWT в ваших проектах.

1Минимизируйте payload

Помещайте в JWT только необходимый минимум данных: ID пользователя, роль, время жизни. Чем больше payload, тем больше размер каждого HTTP-запроса. Детальные данные (email, имя, настройки) лучше запрашивать по user ID через API.

2Используйте асимметричные алгоритмы

В микросервисной архитектуре предпочитайте RS256 или ES256 вместо HS256. Это позволяет auth-сервису подписывать токены приватным ключом, а остальным сервисам — проверять их публичным ключом без доступа к секрету.

3Не отключайте валидацию exp

В development-среде часто отключают проверку времени жизни для удобства. Это опасная практика, которая может попасть в продакшен. Настройте CI/CD для проверки, что валидация exp включена во всех средах.

4Логируйте использование токенов

Записывайте jti (JWT ID) каждого обработанного токена в логи. Это поможет при расследовании инцидентов безопасности: вы сможете отследить, какой именно токен использовался и когда. Используйте jti для защиты от replay-атак.

Как пользоваться декодером

Простая инструкция для быстрого анализа JWT-токена за несколько секунд.

1

Скопируйте JWT

Возьмите токен из заголовка Authorization, cookie, DevTools или логов вашего приложения. Обычно он начинается с eyJ.

2

Вставьте в поле ввода

Декодирование происходит мгновенно при вставке. Полностью в браузере — токен никуда не отправляется.

3

Изучите результат

Три цветные панели покажут header, payload и signature. Стандартные claims сопровождаются русскими пояснениями.

4

Проверьте срок действия

Блок статуса покажет, истёк ли токен и сколько времени осталось. Скопируйте нужные данные кнопкой «Копировать».

Часто задаваемые вопросы

JWT (JSON Web Token) — это стандарт RFC 7519 для безопасной передачи информации между сторонами в формате JSON. Токен подписывается криптографически, что гарантирует его целостность. JWT используется для авторизации в веб-приложениях: после входа сервер выдаёт токен, и клиент отправляет его с каждым запросом вместо логина и пароля.
Наш декодер работает полностью в браузере на JavaScript. Токен не отправляется ни на какие серверы — вся обработка происходит локально на вашем устройстве. Тем не менее, для продакшен-токенов с чувствительными данными рекомендуется использовать CLI-инструменты или локальные утилиты.
JWT — это общий формат. JWS (JSON Web Signature) — подписанный JWT, который гарантирует целостность, но payload можно прочитать (именно это мы декодируем). JWE (JSON Web Encryption) — зашифрованный JWT, где payload скрыт от посторонних. На практике, когда говорят «JWT», обычно имеют в виду именно JWS.
Claims (утверждения) — это пары ключ-значение в payload токена. Стандарт RFC 7519 определяет 7 зарезервированных claims: iss (издатель), sub (субъект), aud (аудитория), exp (время истечения), nbf (не раньше), iat (время создания), jti (уникальный ID). Помимо них, можно добавлять любые пользовательские claims (роль, email, права).
Вставьте токен в наш декодер — если в payload есть claim exp, инструмент автоматически покажет статус: токен действителен (зелёный блок) или истёк (красный блок) с точным указанием оставшегося или прошедшего времени. Программно проверка делается сравнением exp с текущим Unix timestamp.
Потому что payload JWT не зашифрован, а лишь закодирован в Base64URL. Любой, кто получит токен (через перехват трафика, XSS, логи), может декодировать и прочитать содержимое. Именно это делает наш декодер. В JWT следует хранить только минимум: ID пользователя, роль, время жизни.
Для монолитных приложений подходит HS256 (HMAC + SHA-256) — он быстрый и простой в настройке. Для микросервисов рекомендуется RS256 или ES256 (асимметричные алгоритмы), где auth-сервис подписывает приватным ключом, а остальные сервисы проверяют публичным. ES256 даёт более компактные подписи при той же стойкости.
В OAuth 2.0 access_token может быть JWT (хотя стандарт не требует этого). В OpenID Connect id_token — всегда JWT, содержащий информацию о пользователе (email, имя, sub). При авторизации через Google, Яндекс или другой провайдер вы получаете id_token, который можно декодировать нашим инструментом и увидеть данные пользователя.
JWT по своей природе — stateless, и отозвать его напрямую нельзя. Но есть обходные решения: 1) чёрный список (blacklist) jti в Redis/БД; 2) короткий exp (5-15 мин) + refresh token; 3) версия сессии в claims — при logout увеличиваете версию на сервере. Каждый подход добавляет stateful-элемент, но это неизбежный компромисс.
Это значит, что строка не является валидным JWT. Корректный JWT состоит из трёх частей, разделённых точками: header.payload.signature. Проверьте, что вы скопировали токен полностью, без лишних пробелов или переносов строк. Часто проблема в том, что скопирован только payload или обрезана подпись.
Лиана Арифметова
Создатель

Лиана Арифметова

Миссия: Демократизировать сложные расчеты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Был ли этот калькулятор полезен?

⚖️

Отказ от ответственности

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

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

Медицинские, финансовые и профессиональные решения должны приниматься исключительно на основании консультации с квалифицированными специалистами — врачом, финансовым советником, инженером или другим профессионалом в соответствующей области. Не используйте результаты данного инструмента как единственное основание для принятия важных решений.

Ограничение ответственности. Авторы и разработчики сервиса не несут никакой ответственности за прямой или косвенный ущерб, возникший в результате использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию и применение полученных результатов.

Похожие инструменты

💻

Калькулятор машинного обучения: метрики, обучение, гиперпараметры

Расчёты ML: метрики модели (F1, Precision, Recall, MCC), стоимость обучения на GPU, поиск гиперпараметров, анализ датасета, сложность модели (FLOPs) и кросс-валидация.

🏥

Калькулятор темпа бега и сплитов

Рассчитайте pace (мин/км), скорость (км/ч), время финиша и сплиты по километрам. Для любых дистанций от 1 км до марафона.

⚙️

Калькулятор HVAC (кондиционирование)

BTU сплит-системы и секции радиаторов по площади и теплопотерям. Физика теплопередачи.

💰

Калькулятор аннуитет vs дифференцированный

Сравнение аннуитетного и дифференцированного платежей по кредиту. Переплата, график, разница.

🏠

Калькулятор блинов

Расчёт теста на количество блинов. Тонкие на молоке, на кефире, пышные, дрожжевые, постные на воде.

💻

Удалитель дублирующих строк

Удаление повторяющихся строк из списка. Поиск уникальных, показ только дубликатов, настройки сравнения.

💰

Калькулятор оборотного капитала

Рассчитайте чистый оборотный капитал (NWC), коэффициент текущей ликвидности, быстрой ликвидности и другие показатели оборотных средств.

🏗️

Калькулятор керамзита

Расчёт керамзита для утепления: фракция, объём, вес. Утепление пола, чердака, фундамента.

🏠

Калькулятор техосмотра

Расчёт стоимости техосмотра, сроков прохождения и необходимых документов. Категории ТС, периодичность по возрасту авто, штрафы.

🏠

Калькулятор интересных фактов

Генератор интересных фактов и занимательных вычислений. Для развлечения и расширения кругозора.

🏠

Калькулятор беременности и менструального цикла (в человеческих годах)

Рассчитайте срок беременности, менструальный цикл и узнайте, сколько лет вашей жизни занимают эти процессы.

🏠

Калькулятор беседки

Расчёт беседки: форма, размеры, каркас, крыша, пол, стены, фундамент. Квадратная, прямоугольная, шестигранная, восьмигранная.

🏗️

Калькулятор септика

Расчёт автономной канализации для частного дома: объём септика, количество камер, ЖБ кольца, дренаж, стоимость.

🏠

Калькулятор расхода корма для кошки

Расчёт суточной нормы корма для кошки по весу, возрасту и типу корма.

🏗️

Калькулятор гипсовой штукатурки

Расчёт расхода гипсовой штукатурки: Кнауф Ротбанд, Волма Слой, Unis Теплон. Мешков и стоимости по площади и толщине.