Декодер 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)
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-веб-подпись (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-веб-шифрование (JWE)
В то время как JWS предоставляет подписанные токены, JWE предоставляет зашифрованные токены, где полезная нагрузка конфиденциальна. Токены JWE имеют пять частей вместо трёх: заголовок, зашифрованный ключ, вектор инициализации, зашифрованный текст и тег аутентификации. JWE поддерживает различные алгоритмы шифрования, включая AES-GCM и AES-CBC с HMAC. Обратите внимание, что этот декодер обрабатывает только токены JWS; токены JWE требуют расшифровки с соответствующим ключом.
Спецификации RFC
Стандарты JWT и JOSE определены в нескольких RFC IETF: