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

Ваша реклама здесь?

[Напишите нам по электронной почте](mailto:hi@dennn.is?subject=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D0%BD%D0%B0%20OneClick%20Pro)

[Реклама Набор плагинов для работы агентов с WordPress.](https://sleekwp.com/?ref=oneclickpro)
