bringer.ru
ИнструментыДекодер JWT

Декодер JWT

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

Токен JWT
Структура токена
Заголовок
Payload
Подпись
Здесь появится подсвеченный токен…
🔑
Вставьте токен выше, чтобы начать
01Структура

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

JWT состоит из трёх частей, разделённых точкой. Каждая часть закодирована в Base64url — это URL-безопасный вариант Base64, в котором + заменяется на -, а / — на _.

Header
algалгоритм подписи
typтип токена (JWT)
kidID ключа (опц.)
Payload
subсубъект
expистекает
iatвыдан
+ любые поля
Signature
HMAC(
base64(header)
+ "." +
base64(payload),
secret
)

02Стандартные поля

Спецификация RFC 7519 определяет набор зарезервированных полей payload — так называемых registered claims. Их использование необязательно, но рекомендовано для совместимости.

ПолеНазваниеОписание
issIssuerКто выдал токен — домен или идентификатор сервиса.опц.
subSubjectИдентификатор субъекта — обычно ID пользователя или устройства.опц.
audAudienceДля кого предназначен токен.опц.
expExpiration TimeВремя истечения токена (Unix timestamp). После него токен недействителен.важно
nbfNot BeforeТокен не должен приниматься до указанного момента.опц.
iatIssued AtВремя создания токена.опц.
jtiJWT IDУникальный идентификатор токена для защиты от replay-атак.опц.

Помимо стандартных, можно добавлять любые произвольные поля: roles, email, permissions и т.д. Они называются private claims.


03Алгоритмы подписи

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

HMAC · Симметричный
HS256
HMAC + SHA-256. Один секретный ключ для подписи и проверки. Прост в реализации.
Популярный
HMAC · Симметричный
HS384 / HS512
Те же HMAC, но с SHA-384 и SHA-512. Длиннее хэш — выше стойкость к коллизиям.
Нишевый
RSA · Асимметричный
RS256
RSA + SHA-256. Подпись создаётся приватным ключом, проверяется публичным. Подходит для микросервисов.
Рекомендуется
ECDSA · Асимметричный
ES256
Эллиптические кривые + SHA-256. Короткие ключи при высокой стойкости. Быстрее RSA.
Рекомендуется
RSA-PSS · Асимметричный
PS256
Улучшенная схема RSA с рандомизированным padding. Считается более стойкой, чем RS256.
Современный
Без подписи
none
Токен без подписи. Никогда не принимайте токены с alg: none в продакшне.
Опасно

04Безопасность
01
Не храните секреты в payload
Payload закодирован в Base64url, но не зашифрован. Любой, кто перехватит токен, прочитает его содержимое. Не кладите пароли, номера карт и другие чувствительные данные.
02
Всегда устанавливайте exp
Токен без срока действия действителен вечно. Если он утечёт, отозвать его без хранения статуса на сервере будет невозможно. Рекомендуемое время жизни access-токена — от 15 минут до 1 часа.
03
Проверяйте алгоритм на сервере
Уязвимость «alg confusion»: злоумышленник может сменить alg с RS256 на HS256 и подписать токен публичным ключом как секретом. Сервер должен явно указывать ожидаемый алгоритм.
04
Используйте HTTPS
JWT передаётся в заголовке Authorization: Bearer <token>. По незашифрованному HTTP токен легко перехватить. Всегда используйте TLS.
05
Разделяйте access и refresh токены
Access-токен живёт недолго и используется для запросов. Refresh-токен хранится в httpOnly cookie и нужен только для получения нового access-токена.
06
Не храните JWT в localStorage
localStorage доступен из JavaScript, что делает токены уязвимыми к XSS-атакам. Для хранения access-токена лучше использовать память приложения, для refresh-токена — httpOnly; Secure; SameSite=Strict cookie.