Utilia

Gjenerues dhe verifikues JWT

Krijo dhe verifiko JSON Web Token me HS256, RS256, ES256 ose EdDSA. Ndrysho pretendimet, vendos exp e iat dhe kontrollo nënshkrimet lokalisht në shfletues.

Çelësat dhe tokenët janë sekrete. Gjithçka nënshkruhet dhe verifikohet lokalisht me API-n Web Crypto të shfletuesit tënd: asgjë nuk ngarkohet.

Krijo një JWT të nënshkruar

Pretendime kohore:

Verifiko një JWT

Si të krijosh një JWT të nënshkruar

  1. Zgjidh Algoritmin: HS256/384/512 (sekret i përbashkët), RS256/384/512 ose PS256/384/512 (RSA), ES256/384/512 (ECDSA mbi P-256, P-384 ose P-521), ose EdDSA (Ed25519, kur shfletuesi yt e mbështet).
  2. Ndrysho Header (JSON) dhe Payload (pretendime JSON). Fusha alg ndjek gjithmonë algoritmin e zgjedhur dhe typ është si parazgjedhje JWT.
  3. Përdor butonat e pretendimeve kohore për të shtuar data: iat = tani, nbf = tani, ose zgjidh një vonesë si “pas 1 ore” dhe kliko Vendos exp. Vlerat janë NumericDate: sekonda nga 1 janari 1970 UTC.
  4. Shkruaj Sekretin (algoritmet HS, si tekst ose Base64/Base64url te Formati i sekretit) ose Çelësin privat (PEM ose JWK). Nuk ke ende çelës? Kliko Gjenero çelës testues.
  5. Kliko Nënshkruaj tokenin, pastaj Kopjo rezultatin ose kliko Verifiko këtë token për ta kontrolluar menjëherë.

Si ta verifikosh një JWT

  1. Ngjit tokenin te Tokeni për verifikim.
  2. Zgjidh Algoritmin e pritur. Nëse e lë në “Nga header-i i tokenit”, pranohet çfarëdo që thotë header-i, përveç none; nëse zgjedh një algoritëm të caktuar, mjeti refuzon çdo token të nënshkruar ndryshe, siç duhet të bëjë një server i vërtetë.
  3. Shkruaj sekretin ose Çelësin publik (PEM ose JWK): një bllok PEM PUBLIC KEY, RSA PUBLIC KEY ose CERTIFICATE, një JWK, ose një JWK Set (përdoret çelësi që përputhet me kid të header-it).
  4. Opsionalisht vendos një Tolerancë të orës (sekonda) për të toleruar diferenca të vogla ore, pastaj kliko Verifiko tokenin.

Rezultati tregon nëse nënshkrimi është i vlefshëm dhe më pas kontrollon exp (skadimi) dhe nbf (jo përpara) me orën aktuale të kompjuterit tënd. Një token me nënshkrim të saktë por me skadim në të shkuarën raportohet si i skaduar, jo si i vlefshëm.

Çelësat dhe formatet

Për nënshkrim, mjeti pranon blloqe PKCS#8 PRIVATE KEY, blloqe PKCS#1 RSA PRIVATE KEY dhe SEC1 EC PRIVATE KEY (të konvertuara brenda në PKCS#8), si dhe JWK privatë. Çelësat e mbrojtur me fjalëkalim duhet fillimisht të eksportohen pa fjalëkalim. Gjenero çelës testues krijon një sekret të rastësishëm me madhësinë e hash-it për algoritmet HS, një çift çelësash RSA 2048-bit për RS e PS, kurbën përkatëse për ES, ose një çift Ed25519. Çelësat marrin formën PEM dhe JWK, dhe plotësohen në të dyja anët, që ta provosh menjëherë gjithë ciklin.

Nënshkrimet ndjekin RFC 7515 dhe RFC 7518: RSA-PSS përdor një kripë (salt) po aq të gjatë sa hash-i, ndërsa nënshkrimet ECDSA janë bashkimi i papërpunuar r||s. Implementimi riprodhon shembullin HS256 të RFC 7515, Shtojca A.1.

Shënime sigurie

  • Gjithçka ekzekutohet në shfletuesin tënd me API-n Web Crypto. As tokenët, as çelësat nuk dërgohen askund, por prapë parapëlqe çelësat testues në vend të sekreteve të produksionit.
  • alg: none nuk nënshkruhet kurrë dhe nuk pranohet kurrë.
  • Sekretet HMAC duhet të jenë të paktën sa hash-i (32 bajt për HS256). Një sekret më i shkurtër shkakton një paralajmërim.
  • Një nënshkrim provon integritetin dhe origjinën, jo që pretendimet janë të përshtatshme: serverët duhet të kontrollojnë gjithashtu iss, aud dhe fushëveprimet (scopes).

Pyetje të shpeshta

Cili është ndryshimi mes HS256 dhe RS256?

HS256 përdor një sekret të vetëm të përbashkët si për nënshkrim ashtu edhe për verifikim, ndaj çdo verifikues mund të falsifikojë gjithashtu tokenë. RS256 (si dhe PS256, ES256, EdDSA) nënshkruan me një çelës privat dhe verifikon me një çelës publik që mund të publikohet pa rrezik.

Pse një nënshkrim i vlefshëm shfaq prapë një gabim?

Sepse tokeni është jashtë periudhës së vlefshmërisë: exp është në të shkuarën ose nbf është në të ardhmen. Kontrolli i nënshkrimit dhe kontrolli i kohës raportohen veçmas.

Pse refuzohet alg “none”?

Një token i pa nënshkruar mund ta krijojë kushdo. Pranimi i tij ka qenë një cenueshmëri klasike e bibliotekave JWT, ndaj ky mjet e refuzon si gjatë nënshkrimit, ashtu edhe gjatë verifikimit.

A mund të përdor çelësin tim RSA ose EC?

Po. Ngjit çelësin privat si PEM ose JWK për të nënshkruar, dhe çelësin publik për të verifikuar. Mjeti kontrollon që lloji i çelësit dhe kurba të përputhen me algoritmin e zgjedhur.

Pse është çaktivizuar EdDSA?

Shfletuesi yt nuk e mbështet ende Ed25519 në Web Crypto. Versionet e fundit të Chrome, Edge, Firefox dhe Safari e mbështesin.