Как пользоваться: JWT декодер
- Вставьте JWT (с префиксом
Bearerили без него) в поле Encoded token или нажмите Load sample. - Изучите декодированные header и payload; бейджи покажут алгоритм и то, истёк ли срок действия токена.
- Проверьте таблицу Claims: времена
exp,iatиnbfпоказаны в вашем локальном часовом поясе. - При желании проверьте подпись: введите общий секрет для HS256/384/512 или вставьте открытый ключ (PEM или JWK) для токенов RS, PS, ES и EdDSA.
Что такое JWT?
JSON Web Token (JWT, произносится «джот», описан в RFC 7519) — это компактная строка, безопасная для URL, которая используется для передачи claims между сторонами. Чаще всего её применяют как access token или ID token в OAuth 2.0 и OpenID Connect, передавая в заголовке Authorization: Bearer …. Токен состоит из трёх частей в кодировке Base64URL, разделённых точками:
- Header — JSON с описанием токена, например
{"alg":"HS256","typ":"JWT"}. - Payload — JSON с claims: кто пользователь, что ему разрешено и когда истекает срок действия токена.
- Signature — вычисляется по
header.payloadс помощью секрета или закрытого ключа, поэтому любое изменение первых двух частей делает подпись недействительной.
Важно: header и payload только закодированы, но не зашифрованы. Любой, у кого есть токен, может их прочитать — именно это и делает данный декодер. Никогда не помещайте секреты и чувствительные персональные данные в payload JWT. (Существуют зашифрованные токены — JWE, у которых пять частей, но их payload можно прочитать только с ключом расшифровки.)
Зарегистрированные claims
| Claim | Название | Значение |
|---|---|---|
iss | Issuer | Кто выпустил токен (например, URL вашего сервера авторизации) |
sub | Subject | Пользователь или сущность, которую представляет токен |
aud | Audience | API, которые должны принимать токен |
exp | Expiration | Unix-время, после которого токен必须 быть отклонён |
nbf | Not before | Unix-время, до которого токен не действителен |
iat | Issued at | Unix-время создания токена |
jti | JWT ID | Уникальный ID, полезный для защиты от повторного использования (replay) |
Временные claims — это секунды с 1 января 1970 года UTC, а не миллисекунды. Это частая ошибка при создании токенов в JavaScript с помощью Date.now(). Декодер преобразует их в понятные даты; для других временных меток используйте конвертер Unix-времени.
Алгоритмы подписи
HS256/384/512 используют HMAC с общим секретом: один и тот же ключ подписывает и проверяет, поэтому любой проверяющий может также создавать токены. RS256 (RSA), PS256 (RSA-PSS), ES256 (ECDSA P-256) и EdDSA используют закрытый ключ для подписи и открытый ключ для проверки — это лучший выбор, когда токены должны проверять несколько сервисов. Провайдеры идентификации публикуют открытые ключи в виде JWKS по адресу вида /.well-known/jwks.json; вы можете вставить этот JSON сюда, и ключ, соответствующий kid токена, будет выбран автоматически. Проверка выполняется с помощью Web Crypto API браузера.
Чек-лист безопасности
- Всегда проверяйте подпись на сервере — одного декодирования недостаточно, чтобы доверять токену.
- Отклоняйте
alg: noneи явно задавайте алгоритмы, которые ожидаете, чтобы избежать атак подмены алгоритма. - Проверяйте
exp,nbf,issиaud, допуская лишь небольшое расхождение часов. - Для HS256 используйте случайный секрет длиной не менее 256 бит — его можно создать в генераторе паролей.
Также ищут как: json web token, bearer токен декодер.
Инструменты, которые хорошо сочетаются с JWT декодер
- Генератор PKCE — Проверьте или отладьте вход через OAuth 2.0 / OpenID Connect с PKCE.
- Base64 кодер / декодер — Преобразуйте текст в Base64 и обратно с полной поддержкой UTF-8 (акценты, эмодзи), включите URL-safe Base64 или перетащите файл, чтобы получить его строку Base64 или data URI.
- Генератор хешей — Мгновенно вычисляйте хеши MD5 и SHA для любого текста или файла, создавайте подписи HMAC и вставляйте ожидаемую контрольную сумму, чтобы проверить загрузку.
- JSON форматтер — Вставьте JSON, чтобы отформатировать, минифицировать или проверить его.
Часто задаваемые вопросы
Безопасно ли вставлять мой JWT сюда?
Можно ли декодировать JWT без секрета?
Как проверить, истёк ли срок действия JWT?
exp — это Unix-время в секундах. Этот инструмент сравнивает его с часами вашего устройства и показывает бейдж «Expired» или «Not expired», а также точное время в вашем часовом поясе.