UltKit
Зображення11
PDF13
Документи й дані7
Відео6
Аудіо4
Інші інструменти22

Декодер JWT

Вставте JSON Web Token і перегляньте його заголовок і payload як відформатований JSON: час видачі та закінчення терміну дії показано як дати, а також позначено, чи дійсний токен зараз. Декодування повністю відбувається у вашому браузері, і це важливо, коли токен є чинними обліковими даними.

0 символів · 0 слів · 0 рядків

0 символів · 0 слів · 0 рядків

Працює повністю у вкладці браузера. Ваш текст ніколи не завантажується на сервер і не зберігається.

Зареєстровані поля

Сім назв полів, визначених у RFC 7519 §4.1. Усі необов’язкові; час задається в секундах від 1970-01-01 UTC.

ПолеЗначення
issВидавець: хто створив і підписав токен
subСуб’єкт: користувач або сутність, якої стосується токен
audАудиторія: для кого призначено токен
expЧас завершення: відхиляти токен після цього моменту
nbfНе раніше: відхиляти токен до цього моменту
iatЧас видачі: коли токен створено
jtiІдентифікатор JWT: унікальний ідентифікатор для захисту від повторного використання

Поширені значення alg

Значення algЗначення
HS256HMAC із SHA-256; один спільний секрет підписує й перевіряє
RS256Підпис RSA PKCS#1 v1.5 із SHA-256; приватний ключ підписує, відкритий перевіряє
PS256RSA-PSS із SHA-256
ES256ECDSA на кривій P-256 із SHA-256; короткі підписи
EdDSAПідписи Ed25519 або Ed448
noneНепідписаний токен; сервери мають його відхиляти

Що всередині JSON Web Token

JWT визначено в RFC 7519 (травень 2015), де пропонується вимовляти його як англійське слово «jot». Поширена підписана форма — це три рядки Base64url, з’єднані крапками: header.payload.signature. Заголовок (header) містить у полі alg назву алгоритму підпису, наприклад HS256 або RS256, а часто й ідентифікатор ключа в kid. Корисне навантаження (payload) містить claims — JSON-поля, як-от sub (користувач), iss (емітент), aud (цільова аудиторія), а також exp, nbf та iat, які задають час у секундах від 1 січня 1970 року за UTC. Декодер перетворює ці три значення на ваш локальний час і формат ISO 8601 та повідомляє, чи токен закінчився, чи ще не набув чинності, чи перебуває в межах терміну дії.

Base64url — це кодування, а не шифрування, тож будь-хто, у кого є токен, може прочитати його payload так само, як це робить ця сторінка. Ніколи не додавайте до claims паролі, номери карток чи інші секрети. Токен із п’ятьма частинами, розділеними крапками, — це JWE, зашифрований токен: його вміст неможливо прочитати без ключа, і декодер повідомляє про це. Початковий префікс «Bearer », скопійований із заголовка Authorization, видаляється автоматично.

Чому підпис тут не перевіряється

Підпис доводить, що заголовок і payload створила сторона, яка має ключ, і що відтоді їх не змінювали. Для перевірки потрібен цей ключ: спільний секрет для HMAC-алгоритмів, як-от HS256, або публічний ключ емітента для RS256, ES256 чи EdDSA. Вставляти робочий секрет підпису на будь-яку вебсторінку — погана ідея, а декодер, який удавав би, що ручається за токен без ключа, давав би хибне відчуття безпеки, тому цей інструмент показує підпис, але не перевіряє його. Сприймайте побачене як твердження самого токена, а не як факт.

Перевірка має відбуватися на вашому сервері за допомогою підтримуваної бібліотеки із жорстко заданим очікуваним алгоритмом. Це пояснюють дві історичні помилки: прийняття alg «none», що дає змогу будь-кому підробити непідписаний токен, і плутанина алгоритмів, коли сервер, який очікує RS256, змушують перевіряти підпис HS256, використовуючи публічний ключ як секрет HMAC. Декодер потрібен для налагодження: побачити, які claims видає провайдер, помітити неправильну аудиторію або з’ясувати, що сесія завершилася, бо exp минув хвилину тому. Щоб прочитати сирі сегменти Base64url, скористайтеся декодером Base64.

Поширені запитання

Чи безпечно вставляти справжній access token у декодер JWT?
На цій сторінці токен не залишає ваш браузер. Проте чинний токен працює як пароль, доки не закінчиться його термін дії, тому краще використовуйте прострочені або тестові токени й не залишайте робочі на скриншотах і в чатах.
Чому токен показано як прострочений, хоча його щойно видали?
Спершу перевірте годинник на пристрої. Деякі емітенти видають токени доступу лише на кілька хвилин, а токен, скопійований із журналу, може бути старішим, ніж здається. Якщо exp записано в мілісекундах замість секунд, трапляється зворотне: дата виходить на тисячі років уперед.
Чи може хтось змінити payload мого JWT?
Вони можуть змінити й заново закодувати його, але підпис більше не збігатиметься. Сервер, який перевіряє підписи правильним ключем і алгоритмом, відхилить змінений токен.
Яка різниця між JWS і JWE?
JWS (RFC 7515) підписаний, складається з трьох частин, і його може прочитати будь-хто. JWE (RFC 7516) зашифрований, має п’ять частин, і payload може прочитати лише власник ключа.
Чи робить вихід із системи JWT недійсним?
Сам по собі ні. Підписаний JWT лишається чинним до exp, якщо сервер не веде список заборонених токенів або не перевіряє запис сесії, тому токенам доступу зазвичай дають короткий термін дії.