raatools/

JWT Декодер

Вставте JWT для декодування та перевірки заголовка, корисного навантаження та вимог.

Що таке JWT?

JSON Web Token (JWT, вимовляється «джот») — це компактний, URL-безпечний формат токена, визначений у RFC 7519. JWT є галузевим стандартом для передачі інформації про автентифікацію та авторизацію між сторонами. Вони широко використовуються в системах єдиного входу (SSO), потоках OAuth 2.0 та автентифікації API.

JWT складається з трьох частин, закодованих у Base64URL та розділених крапками: заголовка, корисного навантаження та підпису. Заголовок визначає алгоритм підпису (наприклад, HS256, RS256). Корисне навантаження містить твердження — пари ключ-значення з такою інформацією, як ідентифікатор користувача, дозволи та час закінчення дії. Підпис гарантує, що токен не було підроблено.

Поширені твердження JWT

  • sub: sub (Subject — суб'єкт): Ідентифікує принципала — зазвичай ідентифікатор користувача або адресу електронної пошти.
  • iat: iat (Issued At — видано о): Unix-мітка часу, що вказує, коли було створено токен.
  • exp: exp (Expiration — закінчення дії): Unix-мітка часу, після якої токен більше не дійсний.
  • iss: iss (Issuer — видавець): Ідентифікує, хто видав токен (наприклад, ваш сервер автентифікації).
  • aud: aud (Audience — аудиторія): Ідентифікує передбачуваного одержувача токена (наприклад, ваш API).

Як користуватися цим інструментом

Вставте JWT в поле введення. Інструмент негайно декодує заголовок і корисне навантаження, відображаючи твердження у зручному форматі. Час закінчення дії перетворюється на дати, зрозумілі людині. Інструмент також перевіряє структуру токена і вказує, якщо формат недійсний.

Чи безпечно вставляти тут свій JWT?

Так. Цей інструмент декодує JWT повністю у вашому браузері за допомогою JavaScript. Дані не надсилаються на жоден сервер. Однак JWT завжди слід розглядати як конфіденційні облікові дані — ніколи не передавайте виробничі токени публічно, не публікуйте їх у повідомленнях чату та не фіксуйте їх у системах контролю версій.

Як працює автентифікація JWT

Коли користувач входить у систему, сервер створює JWT, що містить ідентифікатор та дозволи користувача, підписує його секретним ключем і повертає клієнту. Клієнт включає цей токен в заголовок Authorization наступних запитів до API. Сервер перевіряє підпис, щоб переконатися, що токен автентичний і не був змінений.

Цей підхід є бездержавним — сервер не повинен зберігати дані сеансу в базі даних. Вся необхідна інформація вбудована безпосередньо в токен. Це робить JWT ідеальними для розподілених систем, архітектур мікросервісів та безсерверних застосунків, де спільний стан важко підтримувати.

Поширені помилки при використанні JWT

Зберігання конфіденційних даних (паролів, номерів кредитних карток) у корисному навантаженні JWT є критичною помилкою. Корисне навантаження лише закодоване у Base64, але не зашифроване — будь-хто з токеном може його декодувати та прочитати. Зберігайте у JWT лише ідентифікатори та неконфіденційні твердження.

Використання надмірно довгого терміну дії є ще однією поширеною помилкою. Токен, дійсний протягом 30 днів, дає зловмиснику 30 днів для використання вкраденого токена. Тримайте термін дії токенів доступу коротким (5–15 хвилин) і використовуйте токени оновлення для тривалих сеансів.

Часті запитання

У чому різниця між HS256 і RS256?

HS256 використовує спільний симетричний секрет — той самий ключ підписує і перевіряє токен. RS256 використовує пару асиметричних ключів — приватний ключ підписує, а відкритий ключ перевіряє. RS256 є кращим для розподілених систем, оскільки ключ перевірки можна публічно передати без шкоди для безпеки.

Чи можна відкликати JWT?

JWT є бездержавними, тому їх не можна відкликати безпосередньо. Поширені обхідні шляхи включають ведення серверного списку блокування відкликаних ідентифікаторів токенів, використання коротких термінів дії або ротацію ключів підпису. Для потреб негайного відкликання розгляньте можливість використання непрозорих токенів із серверним зберіганням сеансів.