Генератор JWT
Създайте подписан JSON Web Token със собствени 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 секунди, което е десет години. По-дългите стойности се отхвърлят със съобщение, посочващо полето.