Utilia

JWT декодер

Декодирайте хедъра и съдържанието на JWT, прочетете exp, iat и nbf като дати и проверете подписи HS256, RS256, ES256 или EdDSA във вашия браузър.

Токените са данни за достъп. Този инструмент ги декодира и проверява във вашия браузър и никога не ги изпраща никъде.

Проверка на подписа

HS256/384/512: въведете споделената тайна. RS, PS, ES (256/384/512) и EdDSA: поставете публичния ключ като PEM (публичен ключ, RSA публичен ключ или сертификат) или JWK (JWK Set се подбира по kid).

Как да декодирате JWT

  1. Поставете токена в полето JSON Web Token. Работи и с цяла стойност Authorization: Bearer …: префиксът Bearer и новите редове се премахват автоматично.
  2. Токенът се декодира, докато пишете (или щракнете върху Декодирай). Хедър и Съдържание (payload) се показват като форматиран JSON, всеки със свой бутон Копирай.
  3. Прегледайте таблицата Времеви полета: exp, nbf и iat са показани със суровата си стойност, датата във вашия часови пояс, относително време („след 3 часа“, „преди 2 дни“) и състояние като Изтекъл или Още не е валиден.
  4. Прочетете предупрежденията над резултатите, например когато alg е none или когато дата изглежда като милисекунди.
  5. За да проверите подписа, попълнете ключа в Проверка на подписа и щракнете върху Провери подписа.

Декодирането не е проверка

JWT се състои от три части в Base64url, разделени с точки: header.payload.signature. Хедърът и съдържанието са само кодирани, не шифровани, затова всеки, който държи токена, може да ги прочете, а този инструмент декодира всеки токен без ключ. Това означава и че декодираното съдържание не доказва нищо: някой може да го е променил. Само валиден подпис показва, че токенът е издаден от притежателя на ключа и не е променян оттогава. Затова в състоянието пише „Декодиран (подписът не е проверен)“, докато не го проверите.

Токен с пет части е JWE (шифрован JWT): съдържанието му не може да се прочете без ключа за дешифриране и инструментът ви го съобщава.

Проверка на подписа

  • HS256, HS384, HS512 (HMAC): въведете споделената Тайна. С Формат на тайната посочете дали е обикновен текст (UTF-8), или Base64/Base64url, защото някои доставчици пазят тайните в Base64. Можете да поставите и JWK от тип oct. Ако тайната е по-кратка от дължината на хеша (32 байта за HS256), инструментът отбелязва, че е под минимума по RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 и EdDSA: поставете Публичен ключ (PEM или JWK). Приетите PEM блокове са PUBLIC KEY, RSA PUBLIC KEY и CERTIFICATE (ключът се чете от X.509 сертификата). Работи и JWK, и цял JWK Set: използва се ключът, чийто kid съвпада с хедъра. Частните ключове се отхвърлят, защото проверката никога не се нуждае от такъв. EdDSA поддържа Ed25519 в браузъри, чието Web Crypto го реализира.

Проверката използва Web Crypto API на браузъра. Резултатът „Невалиден подпис“ означава, че ключът е грешен или токенът е променен. Имайте предвид, че алгоритъмът се взема от хедъра на токена: истинският сървър трябва да фиксира очаквания алгоритъм в конфигурацията си, иначе нападател може да го избере.

Бележки за сигурността

  • Токените са данни за достъп. Който притежава валиден токен за достъп, обикновено може да действа като негов собственик до изтичането му. Този инструмент декодира и проверява всичко във вашия браузър и никога не изпраща токена или ключа никъде. Все пак избягвайте да поставяте производствени токени в инструменти, които не можете да проверите.
  • alg: none означава, че токенът е неподписан. Всеки може да подправи такъв и сървърът трябва да го отхвърли. Инструментът показва предупреждение и отказва да „провери“ такъв токен.
  • Проверките на времето тук използват часовника на вашия компютър без толеранс; сървърите често допускат минута-две разлика.
  • Датите в JWT (NumericDate) са секунди от 1 януари 1970 г. UTC. 13-цифрена стойност вероятно е в милисекунди, което е често срещана грешка.

Често задавани въпроси

Може ли инструментът да ми каже дали токенът е валиден?

Може да покаже дали подписът съвпада с ключа, който подавате, и дали exp и nbf са изпълнени в момента. Дали токенът ще бъде приет, зависи и от проверки, които знае само сървърът: очакван издател (iss), аудитория (aud), алгоритъм и отнемане на достъпа.

Защо проверката не успява с правилната тайна?

Проверете Формат на тайната: Base64 тайна, въведена като текст, дава различен ключ. Уверете се също, че към тайната не е добавен интервал или нов ред, защото HMAC ключовете се сравняват байт по байт.

Каква е разликата между RS256, PS256 и ES256?

И трите са подписи с публичен ключ и SHA-256. RS256 използва RSA с допълване PKCS#1 v1.5, PS256 използва RSA с допълване PSS, а ES256 използва ECDSA върху кривата P-256, което дава много по-къси подписи.

Къде да намеря публичния ключ на доставчик?

Доставчиците на идентичност публикуват JWKS (JSON Web Key Set), обикновено посочен в /.well-known/openid-configuration под jwks_uri. Отворете го сами и поставете JSON тук; инструментът избира ключа по kid и никога не изтегля нищо.

Безопасно ли е да поставя токена си тук?

Токенът остава на вашето устройство: декодирането и проверката стават локално и нищо не се качва. За допълнителна предпазливост използвайте изтекъл или тестов токен, когато искате само да разгледате структурата.