JWT generatorius ir tikrintuvas
Kurk ir tikrink JSON Web Token su HS256, RS256, PS256, ES256 ar EdDSA. Redaguok laukus, nustatyk exp ir iat bei tikrink parašus savo naršyklėje.
Raktai ir žetonai yra slapta informacija. Viskas pasirašoma ir tikrinama vietoje, naudojant tavo naršyklės Web Crypto API: nieko neįkeliama.
Sukurti pasirašytą JWT
Ši naršyklė nepalaiko Ed25519 per Web Crypto, todėl EdDSA nepasiekiamas.
Bandomieji raktai sugeneruojami tavo naršyklėje ir įrašomi žemiau. Privatųjį raktą ar slaptą raktą laikyk tik sau; dalytis galima tik viešuoju raktu.
Patikrinti JWT
Kaip sukurti pasirašytą JWT
- Pasirink Algoritmas: HS256/384/512 (bendras slaptas raktas), RS256/384/512 arba PS256/384/512 (RSA), ES256/384/512 (ECDSA su P-256, P-384 ar P-521) arba EdDSA (Ed25519, kai naršyklė tai palaiko).
- Redaguok Antraštė (JSON) ir Turinys (JSON laukai). Laukas
algvisada atitinka pasirinktą algoritmą, otyppagal numatytuosius nustatymus yraJWT. - Datoms pridėti naudok laiko laukų mygtukus: iat = dabar, nbf = dabar arba pasirink trukmę, pavyzdžiui, „po 1 val.“, ir spustelėk Nustatyti exp. Reikšmės yra NumericDate: sekundės nuo 1970 m. sausio 1 d. UTC.
- Įvesk Slaptas raktas (HS algoritmams, kaip tekstą arba Base64/Base64url per Slapto rakto formatas) arba Privatusis raktas (PEM arba JWK). Dar neturi rakto? Spustelėk Generuoti bandomąjį raktą.
- Spustelėk Pasirašyti žetoną, tada Kopijuoti rezultatą arba spustelėk Tikrinti šį žetoną, kad jį iškart patikrintum.
Kaip patikrinti JWT
- Įklijuok žetoną į lauką Tikrintinas žetonas.
- Pasirink Laukiamas algoritmas. Palikus „Pagal žetono antraštę (niekada none)“, priimama tai, ką nurodo antraštė, išskyrus
none; pasirinkus konkretų algoritmą, įrankis atmeta bet kurį kitaip pasirašytą žetoną, kaip ir turėtų daryti tikras serveris. - Įvesk slaptą raktą arba Viešasis raktas (PEM arba JWK): PEM bloką
PUBLIC KEY,RSA PUBLIC KEYarCERTIFICATE, JWK arba JWK rinkinį (naudojamas raktas, kuriokidsutampa su antraštės reikšme). - Jei nori, nustatyk Laikrodžio nuokrypis (sekundėmis), kad būtų toleruojami nedideli laikrodžių skirtumai, ir spustelėk Tikrinti žetoną.
Rezultatas parodo, ar parašas tinkamas, o paskui palygina exp (galiojimo pabaiga) ir nbf (negalioja iki) su dabartiniu tavo kompiuterio laiku. Žetonas su tinkamu parašu, bet jau pasibaigusiu galiojimu, pranešamas kaip nebegaliojantis, o ne kaip tinkamas.
Raktai ir formatai
Pasirašymui įrankis priima PKCS#8 PRIVATE KEY blokus, PKCS#1 RSA PRIVATE KEY ir SEC1 EC PRIVATE KEY blokus (viduje konvertuojamus į PKCS#8) bei privačiuosius JWK. Slaptažodžiu apsaugotus raktus pirmiausia reikia eksportuoti be slaptažodžio. Generuoti bandomąjį raktą sukuria atsitiktinį slaptą raktą, kurio ilgis lygus maišos ilgiui (HS algoritmams), 2048 bitų RSA raktų porą (RS ir PS), atitinkamą kreivę (ES) arba Ed25519 porą. Raktus gauni PEM ir JWK formatais, o abiejose pusėse jie įrašomi automatiškai, todėl pasirašymo ir tikrinimo ciklas veikia iškart.
Parašai atitinka RFC 7515 ir RFC 7518: RSA-PSS naudoja druską, tokią pat ilgą kaip maiša, o ECDSA parašai yra neapdoroti sujungti r||s. Įgyvendinimas atkartoja RFC 7515 A.1 priedo HS256 pavyzdį.
Saugumo pastabos
- Viskas vyksta tavo naršyklėje su Web Crypto API. Nei žetonai, nei raktai niekur nesiunčiami, bet vis tiek verčiau naudok bandomuosius raktus, o ne darbinių aplinkų slaptus raktus.
alg: noneniekada nepasirašomas ir niekada nepriimamas.- HMAC slaptas raktas turėtų būti bent tokio ilgio kaip maiša (HS256 – 32 baitai). Trumpesnis raktas sukelia įspėjimą.
- Parašas įrodo vientisumą ir kilmę, bet ne tai, kad laukai tinkami: serveriai privalo tikrinti ir
iss,audbei teises (scope).
Dažnai užduodami klausimai
Kuo skiriasi HS256 ir RS256?
HS256 tiek pasirašo, tiek tikrina tuo pačiu bendru slaptu raktu, todėl kiekvienas tikrintojas galėtų ir klastoti žetonus. RS256 (taip pat PS256, ES256, EdDSA) pasirašo privačiuoju raktu, o tikrina viešuoju, kurį saugu skelbti.
Kodėl tinkamas parašas vis tiek rodo klaidą?
Todėl, kad žetonas yra už galiojimo laikotarpio ribų: exp jau praeityje arba nbf dar ateityje. Parašo ir laiko patikros pranešamos atskirai.
Kodėl alg „none“ atmetamas?
Nepasirašytą žetoną gali sukurti bet kas. Jo priėmimas buvo klasikinis JWT bibliotekų pažeidžiamumas, todėl šis įrankis jį atmeta ir pasirašant, ir tikrinant.
Ar galiu naudoti savo RSA ar EC raktą?
Taip. Pasirašymui įklijuok privatųjį raktą kaip PEM arba JWK, tikrinimui – viešąjį raktą. Įrankis patikrina, ar rakto tipas ir kreivė atitinka pasirinktą algoritmą.
Kodėl EdDSA išjungtas?
Tavo naršyklė dar nepalaiko Ed25519 per Web Crypto. Naujausios Chrome, Edge, Firefox ir Safari versijos palaiko.
Susiję įrankiai
- JWT dekoderis Dekoduok JWT antraštę ir turinį, perskaityk exp, iat bei nbf kaip datas ir tikrink HS256, RS256, PS256, ES256 ar EdDSA parašus savo naršyklėje.
- HMAC generatorius Apskaičiuok HMAC-SHA1, SHA-256, SHA-384 ar SHA-512 su tekstiniu, hex ar Base64 raktu, gauk hex ir Base64 išvestį ir patikrink webhook parašą naršyklėje.
- Unix laiko žymos keitiklis Konvertuok Unix laiko žymas sekundėmis ar milisekundėmis į skaitomas datas vietiniu laiku, UTC ir ISO 8601 formatu ir atgal į epoch laiką.
- JSON formatuotojas ir tikrintuvas Nemokamas JSON formatuotojas ir tikrintuvas, kuris naršyklėje sutvarko, minimizuoja ir tikrina JSON, o sintaksės klaidas nurodo su eilute ir stulpeliu.