Utilia

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

Laiko laukai:

Patikrinti JWT

Kaip sukurti pasirašytą JWT

  1. 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).
  2. Redaguok Antraštė (JSON) ir Turinys (JSON laukai). Laukas alg visada atitinka pasirinktą algoritmą, o typ pagal numatytuosius nustatymus yra JWT.
  3. 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.
  4. Į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ą.
  5. Spustelėk Pasirašyti žetoną, tada Kopijuoti rezultatą arba spustelėk Tikrinti šį žetoną, kad jį iškart patikrintum.

Kaip patikrinti JWT

  1. Įklijuok žetoną į lauką Tikrintinas žetonas.
  2. 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.
  3. Įvesk slaptą raktą arba Viešasis raktas (PEM arba JWK): PEM bloką PUBLIC KEY, RSA PUBLIC KEY ar CERTIFICATE, JWK arba JWK rinkinį (naudojamas raktas, kurio kid sutampa su antraštės reikšme).
  4. 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: none niekada 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, aud bei 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.