Генератор і перевірка JWT
Створюйте й перевіряйте JSON Web Token з HS256, RS256, PS256, ES256 чи EdDSA. Редагуйте claims, задавайте 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) і Корисне навантаження (claims у JSON). Поле
algзавжди відповідає вибраному алгоритму, аtypза замовчуванням має значенняJWT. - Додайте дати кнопками часових claims: 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 (використовується ключ, чийkidзбігається із заголовком). - За потреби задайте Допуск годинника (секунди), щоб урахувати невеликі розбіжності в часі, і натисніть Перевірити токен.
Результат показує, чи підпис дійсний, а потім звіряє exp (завершення терміну дії) і nbf (не дійсний до) з поточним часом вашого комп’ютера. Токен із правильним підписом, але з терміном дії в минулому, буде позначено як прострочений, а не як дійсний.
Ключі та формати
Для підпису інструмент приймає блоки PKCS#8 PRIVATE KEY, PKCS#1 RSA PRIVATE KEY і SEC1 EC PRIVATE KEY (які внутрішньо перетворюються на PKCS#8), а також закриті JWK. Ключі, захищені паролем, спершу потрібно експортувати без пароля. Згенерувати тестовий ключ створює випадковий секрет розміром із хеш для алгоритмів HS, пару ключів RSA на 2048 біт для RS і PS, відповідну криву для ES або пару Ed25519. Ключі видаються у форматах PEM і JWK та підставляються з обох боків, тож круговий цикл працює одразу.
Підписи відповідають RFC 7515 і RFC 7518: RSA-PSS використовує сіль завдовжки з хеш, а підписи ECDSA – це «сира» конкатенація r||s. Реалізація відтворює приклад HS256 з додатка A.1 до RFC 7515.
Нотатки щодо безпеки
- Усе працює у вашому браузері через Web Crypto API. Ні токени, ні ключі нікуди не надсилаються, але все одно краще використовувати тестові ключі, а не робочі секрети.
alg: noneніколи не підписується й ніколи не приймається.- Секрети HMAC мають бути щонайменше такими ж довгими, як хеш (32 байти для HS256). Коротший секрет викликає попередження.
- Підпис підтверджує цілісність і походження, але не те, що claims доречні: сервери мають перевіряти також
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 та перевірте підпис вебхука у браузері.
- Конвертер Unix-часу Перетворюйте Unix-мітки часу в секундах чи мілісекундах на зрозумілі дати в місцевому часі, UTC та ISO 8601 і повертайте будь-яку дату в epoch-час.
- Форматувальник і валідатор JSON Безкоштовний форматувальник і валідатор JSON: форматує, мінімізує та перевіряє JSON у браузері й показує помилки синтаксису з рядком і стовпцем.