JWT генератор и проверка
Създавайте и проверявайте JSON Web Token с HS256, RS256, PS256, ES256 или EdDSA. Редактирайте полетата, задайте exp и iat и проверете подписа във вашия браузър.
Ключовете и токените са тайни. Всичко се подписва и проверява локално с Web Crypto API на вашия браузър: нищо не се качва.
Създаване на подписан JWT
Този браузър не поддържа Ed25519 в Web Crypto, затова EdDSA не е наличен.
Тестовите ключове се генерират във вашия браузър и се попълват по-долу. Пазете частния ключ или тайната за себе си; споделяйте само публичния ключ.
Проверка на JWT
Как да създадете подписан JWT
- Изберете Алгоритъм: HS256/384/512 (споделена тайна), RS256/384/512 или PS256/384/512 (RSA), ES256/384/512 (ECDSA върху P-256, P-384 или P-521) или EdDSA (Ed25519, когато браузърът ви го поддържа).
- Редактирайте Хедър (JSON) и Съдържание (JSON полета). Полето
algвинаги следва избрания алгоритъм, аtypпо подразбиране еJWT. - С бутоните за времеви полета добавяте дати: iat = сега, nbf = сега, или изберете срок като „след 1 час“ и щракнете върху Задай exp. Стойностите са NumericDate: секунди от 1 януари 1970 г. UTC.
- Въведете Тайна (за алгоритмите HS, като текст или Base64/Base64url чрез Формат на тайната) или Частен ключ (PEM или JWK). Още нямате ключ? Щракнете върху Генерирай тестов ключ.
- Щракнете върху Подпиши токена, после Копирай резултата или щракнете върху Провери този токен, за да го проверите веднага.
Как да проверите JWT
- Поставете токена в Токен за проверка.
- Изберете Очакван алгоритъм. Ако го оставите на „От хедъра на токена (никога none)“, се приема всичко, което пише в хедъра, освен
none; ако изберете конкретен алгоритъм, инструментът отхвърля всеки токен, подписан по друг начин, както би направил истински сървър. - Въведете тайната или Публичен ключ (PEM или JWK): PEM блок
PUBLIC KEY,RSA PUBLIC KEYилиCERTIFICATE, JWK или JWK Set (използва се ключът, чийтоkidсъвпада с хедъра). - По желание задайте Толеранс на часовника (секунди), за да се допуснат малки разлики във времето, и щракнете върху Провери токена.
Резултатът показва дали подписът е валиден, после сверява exp (изтичане) и nbf (валиден от) с текущото време на вашия компютър. Токен с вярен подпис, но срок в миналото, се отчита като изтекъл, а не като валиден.
Ключове и формати
За подписване инструментът приема блокове PKCS#8 PRIVATE KEY, PKCS#1 RSA PRIVATE KEY и SEC1 EC PRIVATE KEY (вътрешно се преобразуват в PKCS#8) и частни JWK. Ключовете със защита с парола трябва първо да се експортират без парола. Генерирай тестов ключ създава случайна тайна с размера на хеша за алгоритмите HS, 2048-битова RSA двойка ключове за RS и PS, съответната крива за ES или двойка Ed25519. Ключовете се получават като PEM и JWK и се попълват и от двете страни, така че цикълът подписване–проверка работи веднага.
Подписите следват RFC 7515 и RFC 7518: RSA-PSS използва сол с дължината на хеша, а ECDSA подписите са суровата конкатенация r||s. Реализацията възпроизвежда примера за HS256 от RFC 7515, приложение A.1.
Бележки за сигурността
- Всичко работи във вашия браузър с Web Crypto API. Нито токените, нито ключовете се изпращат някъде, но все пак предпочитайте тестови ключове пред производствени тайни.
alg: noneникога не се подписва и никога не се приема.- HMAC тайните трябва да са поне колкото хеша (32 байта за HS256). По-кратка тайна води до предупреждение.
- Подписът доказва цялост и произход, но не че полетата са подходящи: сървърите трябва да проверяват и
iss,audи обхватите (scopes).
Често задавани въпроси
Каква е разликата между HS256 и RS256?
HS256 използва една споделена тайна и за подписване, и за проверка, така че всеки, който проверява, може и да подправя токени. RS256 (както и PS256, ES256, EdDSA) подписва с частен ключ и проверява с публичен ключ, който може безопасно да се публикува.
Защо валиден подпис пак показва грешка?
Защото токенът е извън срока си на валидност: exp е в миналото или nbf е в бъдещето. Проверката на подписа и проверката на времето се отчитат поотделно.
Защо alg „none“ се отхвърля?
Неподписан токен може да създаде всеки. Приемането му е била класическа уязвимост в JWT библиотеките, затова този инструмент го отхвърля и при подписване, и при проверка.
Мога ли да използвам собствен RSA или EC ключ?
Да. Поставете частния ключ като PEM или JWK, за да подпишете, и публичния ключ, за да проверите. Инструментът проверява дали типът ключ и кривата съответстват на избрания алгоритъм.
Защо EdDSA е изключен?
Вашият браузър още не поддържа Ed25519 в Web Crypto. Новите версии на Chrome, Edge, Firefox и Safari го поддържат.
Сродни инструменти
- JWT декодер Декодирайте хедъра и съдържанието на JWT, прочетете exp, iat и nbf като дати и проверете подписи HS256, RS256, ES256 или EdDSA във вашия браузър.
- HMAC генератор Изчислете HMAC-SHA1, SHA-256, SHA-384 или SHA-512 с ключ като текст, hex или Base64 и проверете подпис на webhook във вашия браузър.
- Конвертор на Unix времеви печат Преобразувайте Unix времеви печат в секунди или милисекунди в четими дати по местно време, UTC и ISO 8601 и обратно – всяка дата в epoch време.
- JSON форматиране и валидиране Безплатно форматиране и валидиране на JSON, което подрежда, минимизира и проверява JSON във вашия браузър, със синтактични грешки по ред и колона.