Utilia

JWT generaator ja kontrollija

Loo ja kontrolli JSON Web Tokeneid algoritmidega HS256, RS256, PS256, ES256 või EdDSA. Muuda väiteid, määra exp ja iat ning kontrolli allkirju brauseris.

Võtmed ja tokenid on saladused. Kõik allkirjastatakse ja kontrollitakse kohapeal sinu brauseri Web Crypto API-ga: midagi ei laadita üles.

Loo allkirjastatud JWT

Ajaväited:

Kontrolli JWT-d

Kuidas allkirjastatud JWT-d luua

  1. Vali Algoritm: HS256/384/512 (jagatud saladus), RS256/384/512 või PS256/384/512 (RSA), ES256/384/512 (ECDSA kõveratel P-256, P-384 või P-521) või EdDSA (Ed25519, kui sinu brauser seda toetab).
  2. Muuda Päis (JSON) ja Sisu (JSON-väited) sisu. Väli alg järgib alati valitud algoritmi ning typ on vaikimisi JWT.
  3. Kuupäevade lisamiseks kasuta ajaväidete nuppe: iat = praegu, nbf = praegu, või vali viivitus, näiteks “1 tunni pärast”, ja klõpsa Määra exp. Väärtused on NumericDate’id: sekundid alates 1. jaanuarist 1970 UTC.
  4. Sisesta Saladus (HS-algoritmid, tekstina või Base64/Base64url vormingus valiku Saladuse vorming all) või Privaatvõti (PEM või JWK). Võtit pole veel? Klõpsa Loo testvõti.
  5. Klõpsa Allkirjasta token, seejärel Kopeeri tulemus või klõpsa Kontrolli seda tokenit, et see kohe üle kontrollida.

Kuidas JWT-d kontrollida

  1. Kleebi token lahtrisse Kontrollitav token.
  2. Vali Oodatud algoritm. Kui jätad valiku “Tokeni päisest (mitte kunagi none)”, aktsepteeritakse kõike, mida päis ütleb, välja arvatud none; kindla algoritmi valimisel lükkab tööriist tagasi iga teisiti allkirjastatud tokeni, nagu päris server peabki tegema.
  3. Sisesta saladus või Avalik võti (PEM või JWK): PEM-plokk PUBLIC KEY, RSA PUBLIC KEY või CERTIFICATE, JWK või JWK Set (kasutatakse võtit, mille kid ühtib päisega).
  4. Soovi korral määra Kella varu (sekundites), et taluda väikeseid kellahälbeid, ning klõpsa Kontrolli tokenit.

Tulemus ütleb, kas allkiri on korrektne, ning seejärel kontrollib exp (aegumine) ja nbf (kehtib alates) väärtusi sinu arvuti praeguse ajaga. Token, mille allkiri on õige, kuid aegumisaeg on minevikus, märgitakse aegunuks, mitte kehtivaks.

Võtmed ja vormingud

Allkirjastamiseks aktsepteerib tööriist PKCS#8 PRIVATE KEY plokke, PKCS#1 RSA PRIVATE KEY ja SEC1 EC PRIVATE KEY plokke (muudetakse sisemiselt PKCS#8-ks) ning privaatseid JWK-sid. Parooliga kaitstud võtmed tuleb enne ilma paroolita eksportida. Loo testvõti loob HS-algoritmidele räsi pikkuse juhusliku saladuse, RS ja PS jaoks 2048-bitise RSA võtmepaari, ES jaoks sobiva kõvera või Ed25519 paari. Võtmed saad nii PEM- kui ka JWK-vormingus ning need täidetakse mõlemale poolele, nii et ringkäik toimib kohe.

Allkirjad järgivad standardeid RFC 7515 ja RFC 7518: RSA-PSS kasutab räsiga sama pikkusega soola ning ECDSA allkirjad on toores r||s ühendus. Teostus taastoodab RFC 7515 lisa A.1 HS256 näite.

Turvamärkused

  • Kõik töötab sinu brauseris Web Crypto API-ga. Tokeneid ega võtmeid ei saadeta kuhugi, ent eelista siiski testvõtmeid tootmissaladustele.
  • alg: none ei allkirjastata kunagi ega aktsepteerita kunagi.
  • HMAC-saladused peaksid olema vähemalt räsi pikkused (HS256 puhul 32 baiti). Lühem saladus annab hoiatuse.
  • Allkiri tõestab terviklust ja päritolu, mitte seda, et väited on sobivad: serverid peavad kontrollima ka iss, aud ja õigusi.

Korduma kippuvad küsimused

Mis vahe on HS256 ja RS256 vahel?

HS256 kasutab allkirjastamiseks ja kontrollimiseks sama jagatud saladust, seega saaks iga kontrollija tokeneid ka võltsida. RS256 (ja PS256, ES256, EdDSA) allkirjastab privaatvõtmega ning kontrollib avaliku võtmega, mida võib julgelt avaldada.

Miks näitab korrektne allkiri ikkagi viga?

Sest token on oma kehtivusajast väljas: exp on minevikus või nbf tulevikus. Allkirja kontrolli ja ajakontrolli tulemused esitatakse eraldi.

Miks alg "none" tagasi lükatakse?

Allkirjastamata tokeni saab luua igaüks. Selle aktsepteerimine oli JWT teekide klassikaline haavatavus, seepärast lükkab see tööriist selle tagasi nii allkirjastamisel kui ka kontrollimisel.

Kas saan kasutada oma RSA või EC võtit?

Jah. Allkirjastamiseks kleebi privaatvõti PEM- või JWK-vormingus, kontrollimiseks avalik võti. Tööriist kontrollib, et võtmetüüp ja kõver sobivad valitud algoritmiga.

Miks EdDSA on keelatud?

Sinu brauser ei toeta veel Web Crypto’s Ed25519. Chrome’i, Edge’i, Firefoxi ja Safari uued versioonid toetavad.