Декодер JWT

Декодируйте JSON Web Token (JWT) для просмотра заголовка, полезной нагрузки и подписи. Полезно для отладки и проверки JWT токенов, используемых в аутентификации и авторизации. Содержимое вашего JWT не будет сохранено.

Полезная нагрузка (Claims):

Заголовок (Алгоритм подписи и тип токена):

Подпись:

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

Подробнее о JSON Web Tokens

Формат JWT

JSON Web Token (JWT) — это компактный, URL-безопасный способ представления утверждений, передаваемых между двумя сторонами. Он состоит из трёх частей, закодированных в Base64URL и разделённых точками: header.payload.signature. Заголовок обычно содержит тип токена (JWT) и алгоритм подписи. Полезная нагрузка содержит утверждения — заявления о сущности (обычно о пользователе) и дополнительные метаданные. Подпись используется для проверки того, что сообщение не было изменено при передаче.

JOSE (JSON Object Signing and Encryption)

JWT является частью более широкого фреймворка JOSE (JSON Object Signing and Encryption), который предоставляет стандартизированный способ защиты данных на основе JSON. JOSE включает несколько связанных спецификаций: JWS (JSON Web Signature) для подписанных токенов, JWE (JSON Web Encryption) для зашифрованных токенов, JWK (JSON Web Key) для представления криптографических ключей и JWA (JSON Web Algorithms) для указания криптографических алгоритмов.

JSON Web Signature (JWS)

Большинство JWT, с которыми вы сталкиваетесь, являются токенами JWS—они подписаны, но не зашифрованы. Это означает, что любой может прочитать полезную нагрузку, декодировав её из Base64URL, но не может изменить её без аннулирования подписи. JWS обеспечивает целостность и подлинность: вы можете проверить, что токен был выдан доверенной стороной и не был подделан.

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

JWS поддерживает различные криптографические алгоритмы для подписи токенов. Они делятся на две категории: симметричные алгоритмы (один ключ для подписи и проверки) и асимметричные алгоритмы (закрытый ключ для подписи, открытый ключ для проверки).

Алгоритмы HMAC (симметричные)

HS256, HS384 и HS512 используют HMAC (Hash-based Message Authentication Code) с SHA-256, SHA-384 или SHA-512 соответственно. Это симметричные алгоритмы — один и тот же секретный ключ используется как для подписи, так и для проверки токена. Алгоритмы HMAC быстрые и простые, но требуют безопасного распределения ключей, поскольку обе стороны нуждаются в одном секрете.

Алгоритмы RSA (асимметричные)

RS256, RS384 и RS512 используют RSASSA-PKCS1-v1_5 с SHA-256, SHA-384 или SHA-512. PS256, PS384 и PS512 используют RSASSA-PSS (вероятностная схема подписи). Алгоритмы RSA используют закрытый ключ для подписи и открытый ключ для проверки. Это позволяет публично делиться ключом проверки без ущерба для безопасности — идеально для распределённых систем, где несколько сервисов должны проверять токены.

Алгоритмы эллиптических кривых (асимметричные)

ES256, ES384 и ES512 используют ECDSA (Elliptic Curve Digital Signature Algorithm) с кривыми P-256, P-384 или P-521 соответственно. Алгоритмы EC обеспечивают такую же безопасность, как RSA, но с меньшими размерами ключей, что приводит к меньшим подписям и более быстрым операциям. ES256 становится всё более популярным для современных приложений благодаря своей эффективности.

JSON Web Encryption (JWE)

В то время как JWS предоставляет подписанные токены, JWE предоставляет зашифрованные токены, где полезная нагрузка конфиденциальна. Токены JWE имеют пять частей вместо трёх: заголовок, зашифрованный ключ, вектор инициализации, зашифрованный текст и тег аутентификации. JWE поддерживает различные алгоритмы шифрования, включая AES-GCM и AES-CBC с HMAC. Обратите внимание, что этот декодер обрабатывает только токены JWS; токены JWE требуют расшифровки с соответствующим ключом.

Спецификации RFC

Стандарты JWT и JOSE определены в нескольких RFC IETF:

  • RFC 7519 определяет JSON Web Token (JWT)
  • RFC 7515 определяет JSON Web Signature (JWS)
  • RFC 7516 определяет JSON Web Encryption (JWE)
  • RFC 7517 определяет JSON Web Key (JWK)
  • RFC 7518 определяет JSON Web Algorithms (JWA).

Связанные инструменты