Как пользоваться: JWT-генератор
- Выберите алгоритм подписи: HS256 для общего секрета или RS256 либо ES256 для закрытого ключа.
- Отредактируйте JSON payload и добавьте клеймы, например
iatиexp, с помощью кнопок. - Введите секрет или вставьте закрытый ключ в формате PKCS#8 для алгоритмов RS, PS и ES.
- Скопируйте готовый токен или откройте его в декодере, чтобы проверить содержимое.
Из чего состоит JWT
JSON Web Token (RFC 7519) состоит из трёх частей в кодировке Base64url, разделённых точками: заголовок.payload.подпись. Подпись вычисляется по первым двум частям, поэтому любое изменение заголовка или клеймов делает её недействительной. Payload только закодирован, но не зашифрован: его может прочитать любой, поэтому никогда не помещайте секреты в JWT.
Выбор алгоритма
| Алгоритм | Ключ | Когда использовать |
|---|---|---|
| HS256 / HS384 / HS512 | Общий секрет (HMAC) | Один сервис и выпускает, и проверяет токены |
| RS256 / RS384 / RS512 | Закрытый ключ RSA, открытый ключ для проверки | Токены проверяют многие сервисы; самая широкая поддержка библиотеками (OAuth, OpenID Connect) |
| PS256 | RSA с паддингом PSS | Как RS256, но с более современной схемой паддинга |
| ES256 / ES384 | Закрытый ключ EC (P-256 / P-384) | Короткие подписи и ключи; Apple и многие современные API |
Зарегистрированные клеймы
issиздатель,subсубъект (ID пользователя),audаудиторияiatвремя выпуска,nbfне раньше,expсрок действия. Все значения в секундах с 1970 года (Unix-время; см. конвертер временных меток)jtiуникальный ID токена, полезен для списков отзыва
Секреты и ключи
RFC 7518 требует, чтобы ключ HMAC был не короче хеш-функции: для HS256 это 32 случайных байта. Короткие секреты, придуманные людьми, можно подобрать офлайн по одному токену. Закрытые ключи должны быть в формате PKCS#8 PEM (BEGIN PRIVATE KEY); старые форматы конвертируйте командой openssl pkcs8 -topk8 -nocrypt. Проверить существующие токены можно в JWT-декодере.
Также ищут как: jwt encode онлайн, jwt builder, rs256 jwt.
Инструменты, которые хорошо сочетаются с JWT-генератор
- Генератор RSA-ключей — Создайте пару открытого и закрытого ключей для подписи JWT, тестирования TLS, экспериментов с шифрованием или SSH.
- HMAC-генератор — Вычисляйте HMAC-подписи с ключом для API-запросов и webhook и проверяйте, совпадает ли полученная подпись с ожидаемой.
- Base64 кодер / декодер — Преобразуйте текст в Base64 и обратно с полной поддержкой UTF-8 (акценты, эмодзи), включите URL-safe Base64 или перетащите файл, чтобы получить его строку Base64 или data URI.
- Генератор хешей — Мгновенно вычисляйте хеши MD5 и SHA для любого текста или файла, создавайте подписи HMAC и вставляйте ожидаемую контрольную сумму, чтобы проверить загрузку.
Часто задаваемые вопросы
Безопасно ли создавать JWT здесь?
Почему RS256 не принимает мой закрытый ключ?
openssl pkcs8 -topk8 -nocrypt -in key.pem.