§

Вставте ваш JWT

Розбір та верифікація підпису виконуються локально. Жодна інформація про токен не надсилається на сервер.
§

Заголовок

json
§

Навантаження

json
§

Верифікація підпису

Введіть секрет для верифікації підпису.

JSON Web Token лежить в основі стека автентифікації — від токенів AWS Cognito і токенів доступу Auth0 та Okta до підписаних Stripe токенів подій, які мусять верифікувати обробники вебхуків. Цей декодер розбиває три Base64URL-сегменти у браузері, відображає заголовок, навантаження та підпис, і декодує стандартні твердження `exp`, `iat` та `nbf` з правильним відображенням часового поясу — без того, щоб ваш токен залишав вкладку або потрапив у серверний лог.

Що таке JSON Web Token?

A JSON Web Token (JWT) — це компактний, безпечний для URL конверт для невеликого навантаження тверджень. Це стандартний формат облікових даних для безсесійних веб-сесій, ID-токенів OAuth/OIDC, автентифікації API між машинами та підписаних magic link. JWT завжди складається з трьох base64url-сегментів, з'єднаних крапками: header.payload.signature. Заголовок та навантаження є JSON; підпис — це бінарний MAC або цифровий підпис над першими двома сегментами.

Як працюють JWT?

Коли цей інструмент декодує токен, він виконує ті самі три кроки, що й будь-яка бібліотека JWT:

  1. Розділити токен по крапках на рівно три непорожніх сегменти. Будь-яка інша форма є некоректною.
  2. Base64url-декодувати сегменти 0 і 1, потім JSON.parse кожен. Заголовок містить алгоритм (alg) та тип токена (typ). Навантаження містить твердження (sub, exp, iat, користувацькі ключі).
  3. Якщо надано секрет, перерахувати MAC над <segment0>.<segment1> за алгоритмом у заголовку. Порівняти байти з третім сегментом.
  4. Відобразити результат верифікації поряд з декодованими твердженнями, включаючи зручний для читання індикатор терміну дії, обчислений з твердження exp.

Чому декодувати JWT у браузері?

Вставка реального, активно використовуваного JWT у сторонній відладчик передає облікові дані у логи цього сервісу, стек спостережуваності та будь-якому партнеру, якому сервіс передає дані. Навіть коли стороння сторона стверджує, що не логує токени, у вас немає способу це перевірити. Цей інструмент був створений, щоб вам ніколи не доводилося йти на такий компроміс:

  • Нуль мережі: рантайм не має викликів fetch, XMLHttpRequest або sendBeacon. Відкрийте DevTools під час декодування та верифікації — панель Network залишиться мовчазною.
  • Нативний Web Crypto: верифікація HMAC використовує crypto.subtle.importKey та crypto.subtle.sign, ті самі примітиви, що викликає ваш рантайм.
  • Статичне розгортання: кожна сторінка є єдиним статичним HTML-файлом без серверного ендпоінту для компрометації. Немає токена для витоку, бо немає сервера, якому витікати.

Що верифікує цей інструмент, а що ні?

Версія 1 цього інструменту верифікує лише підписи сімейства HMAC-SHA. Конкретно:

  • Підтримується: HS256, HS384, HS512. Надайте спільний секрет, і інструмент перерахує та порівняє MAC.
  • Ще не підтримується: RS256/384/512 (RSA), ES256/384/512 (ECDSA), EdDSA та PS256/384/512 (RSA-PSS). Вони потребують відкритого ключа у форматі PEM або JWK і навмисно відкладені до наступного релізу.
  • Відмовлено: alg: "none". Інструмент декодує токен, але явно позначає його як небезпечний — валідації підпису не відбувається, і будь-яка виробнича система, що приймає такий токен, має серйозну вразливість.

Як виглядає приклад декодування JWT?

Вставте канонічний приклад токена RFC 7519 у поле введення вище:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Заголовок декодується у {"alg":"HS256","typ":"JWT"}, а навантаження у {"sub":"1234567890","name":"John Doe","iat":1516239022}. Введіть your-256-bit-secret у панелі верифікації — перевірка підпису поверне «дійсний». Змініть будь-який символ секрету — і повернеться «недійсний». Нічого з цього не залишає ваш браузер.

Це JWT-декодер, який нам хотілося мати, коли потрібно було налагодити токен у продакшні: з повагою до конфіденційності, швидкий і побудований на тих самих примітивах, що використовує рантайм.