Генератор JWT
Створюйте підписаний вебтокен JSON на основі власних тверджень JSON. Виберіть HS256, HS384 або HS512 зі спільним секретом, RS256–PS512 із приватним ключем RSA, ES256–ES512 із відповідним ключем EC або EdDSA з ключем Ed25519 у форматі PEM чи JWK. Генератор може додати заголовок iat, exp і kid, підписує за допомогою бібліотеки jose та показує компактний токен поруч із декодованими заголовком і корисним навантаженням.
Поширені запитання
Які алгоритми підпису можна використовувати?
Генератор підтримує HS256, HS384 і HS512 зі спільним секретом; RS256, RS384, RS512, PS256, PS384 і PS512 із приватним ключем RSA; ES256, ES384 і ES512 із приватним ключем EC на P-256, P-384 або P-521; а також EdDSA з приватним ключем Ed25519. Вибраний алгоритм записується в заголовок alg, а typ завжди має значення JWT.
Що вводити в поле корисного навантаження?
Введіть об’єкт JSON зі своїми твердженнями, наприклад sub, name, iss, aud або будь-яким власним полем. Масиви, рядки та інші значення, що не є об’єктами, відхиляються, оскільки корисне навантаження JWT має бути об’єктом JSON. Порядок тверджень і значення залишаються такими, як ви їх ввели.
Як зчитується секрет HMAC?
Для HS256, HS384 і HS512 секрет використовується як текст UTF-8 після видалення пробілів на початку й у кінці. Якщо ваш секрет — двійкові дані, вставте його як JWK, наприклад {"kty": "oct", "k": "..."}, закодувавши байти у base64url; натомість використовуватимуться декодовані байти. Ключі PEM не приймаються для алгоритмів HMAC, оскільки використання відкритого ключа як секрету HMAC — поширена помилка.
Якої довжини має бути секрет HS256?
RFC 7518 вимагає, щоб ключ був принаймні такої довжини, як вихід хеш-функції: 32 байти для HS256, 48 для HS384 і 64 для HS512. Інструмент підписує і коротшими секретами, щоб ви могли відтворювати тестові токени, але для робочих середовищ слід використовувати довгі випадкові значення, наприклад з Генератора паролів.
Які формати приватних ключів приймаються для RSA, EC та EdDSA?
Вставте незашифрований приватний ключ PEM у форматі PKCS #8 (BEGIN PRIVATE KEY), PKCS #1 (BEGIN RSA PRIVATE KEY) або SEC1 (BEGIN EC PRIVATE KEY) чи приватний JWK, що містить поле d. Зашифровані PEM-файли та приватні ключі OpenSSH не зчитуються. Ключ має відповідати алгоритму: для ES384 потрібен ключ P-384, а ключі RSA мають містити щонайменше 2048 бітів.
Як задаються iat і exp?
Якщо ввімкнено параметр часу видачі, iat встановлюється на поточний час, якщо у вашому корисному навантаженні вже немає твердження iat. Якщо термін дії перевищує 0 секунд, exp встановлюється на поточний час плюс задану кількість секунд і замінює будь-яке значення exp у вашому корисному навантаженні. Якщо термін дії дорівнює 0, exp не додається, а значення exp з корисного навантаження зберігається.
Для чого потрібне поле kid?
Непорожній ідентифікатор ключа записується в заголовок kid, щоб програми перевірки могли вибрати потрібний ключ із JWKS. Якщо як ключ підпису вставити JWKS, kid також визначає, який ключ із набору підписує токен. Конвертер JWK і генератори ключів показують відбиток RFC 7638, який добре підходить для kid.
Що містить результат?
Ви отримаєте компактний токен, алгоритм, ідентифікатор ключа, час видачі та завершення дії у форматі UTC, а також точні JSON заголовок і корисне навантаження, які було підписано. Скопіюйте токен із першого блока. Пізніше декодуйте його за допомогою Декодера JWT або перевірте у Верифікаторі JWT.
Чи зберігаються мої секрети або ключі?
Ні. Секрет або приватний ключ передається лише в запиті на підписання токена, використовується один раз у пам’яті й ніколи не записується в журнал і не зберігається. Утім, для експериментів використовуйте тестові ключі й ніколи не вставляйте робочий ключ підпису в жоден вебінструмент, якщо не контролюєте сервер.
Чи є обмеження на розмір?
Корисне навантаження може містити до 65,536 символів, ключ — до 65,536, а kid — до 256 символів. Термін дії може становити від 0 до 315,360,000 секунд, тобто до десяти років. Довші значення відхиляються з повідомленням, у якому вказано поле.