DevToolPal
RU

Генератор и подпись JWT

Создаёт и подписывает JSON Web Token из JSON-полезной нагрузки алгоритмами HS256/384/512 или RS, PS и ES с закрытым ключом PEM.

Работает локально, без загрузки на сервер

Параметры

Формат секрета

Полезная нагрузка (JSON)

Символов: 0 · 0 B

JWT

Символов: 0 · 0 B

Что делает инструмент

JSON Web Token (JWT, RFC 7519) — компактная строка, безопасная для URL, из трёх частей, разделённых точками: заголовка с алгоритмом подписи, полезной нагрузки с утверждениями (claims) и подписи первых двух частей. API используют JWT как bearer-токены, провайдеры идентификации — как ID-токены.

Инструмент создаёт и подписывает токен из JSON-полезной нагрузки. Поддерживаются:

  • HS256, HS384, HS512: HMAC с общим секретом в виде текста или Base64.
  • RS256, RS384, RS512 и PS256, PS384, PS512: подписи RSA с закрытым ключом PEM.
  • ES256, ES384, ES512: подписи ECDSA с закрытым ключом EC.

Как пользоваться

  1. Напишите полезную нагрузку как JSON-объект или нажмите Пример.
  2. Выберите Алгоритм и введите секрет или вставьте закрытый ключ PEM в верхней части поля ввода.
  3. При желании задайте iat текущим временем, добавьте срок действия (exp) или дополнительные поля заголовка, например ID ключа.
  4. Скопируйте токен из вывода. Вставьте его в декодер JWT, чтобы посмотреть содержимое.

Пример

С секретом your-256-bit-secret следующая полезная нагрузка, подписанная HS256, даёт известный пример токена с jwt.io:

{"sub":"1234567890","name":"John Doe","iat":1516239022}

Заголовок всегда записывается как {"alg":"HS256","typ":"JWT"}, за которым идут добавленные поля; alg всегда соответствует выбранному алгоритму.

Рекомендации

Делайте токены короткоживущими с помощью exp и задавайте iss и aud, чтобы токен для одного сервиса нельзя было повторно использовать в другом. На сервере всегда проверяйте подпись с явным списком разрешённых алгоритмов и отклоняйте none. Секреты HMAC должны быть длинными и случайными, не короче выхода хеша (32 байта для HS256).

Частые вопросы

› Какой алгоритм выбрать?

Тот, который проверяет ваш сервер. HS256 использует общий секрет и распространён внутри одной системы. RS256 и ES256 подписывают закрытым ключом, а проверить может любой по открытому — это удобно для токенов, которые проверяют несколько сервисов. Подписи ES256 гораздо короче, чем RS256.

› Какие форматы закрытых ключей поддерживаются?

PEM-ключи в PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 RSA (BEGIN RSA PRIVATE KEY) и SEC1 EC (BEGIN EC PRIVATE KEY). Зашифрованные ключи сначала экспортируйте без парольной фразы. Для ES256, ES384 и ES512 ключ должен быть на кривой P-256, P-384 или P-521 соответственно.

› Является ли полезная нагрузка JWT секретной?

Нет. Заголовок и полезная нагрузка лишь закодированы в Base64URL, и любой, у кого есть токен, может их прочитать. Подпись защищает от изменений, а не от чтения. Никогда не кладите пароли и другие секреты в полезную нагрузку JWT.

› Сохраняется ли мой секрет или закрытый ключ и отправляется ли куда-то?

Нет. Подпись выполняется в браузере через Web Crypto API. Секрет или ключ хранятся только в памяти этой страницы: они не сохраняются, не попадают в адресную строку и не включаются в ссылки для отправки. И всё же не вставляйте рабочие ключи в веб-страницы, которые вы не контролируете.