Перейти к содержимому

Генератор 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 секунд, то есть до десяти лет. Более длинные значения отклоняются с сообщением, в котором указано соответствующее поле.

О проекте OneClick Pro

OneClick Pro — это бесплатная коллекция из более чем 150 веб-инструментов для повседневных задач: преобразования изображений и единиц измерения, форматирования и проверки кода, проверки доменов и SEO, а также работы с текстом, датами и числами. Все инструменты доступны без регистрации и подписки, а введенные вами данные используются только для расчета результата и никогда не сохраняются. Используйте коллекцию как быстрый набор инструментов для разовых задач или добавьте в закладки те, которыми пользуетесь каждый день.