Utilia

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.

Žetonai yra prisijungimo duomenys. Šis įrankis juos dekoduoja ir tikrina tavo naršyklėje ir niekur nesiunčia.

Patikrinti parašą

HS256/384/512: įvesk bendrą slaptą raktą. RS, PS, ES (256/384/512) ir EdDSA: įklijuok viešąjį raktą kaip PEM (viešasis raktas, RSA viešasis raktas arba sertifikatas) arba JWK (JWK rinkinys parenkamas pagal kid).

Kaip dekoduoti JWT

  1. Įklijuok žetoną į lauką JSON Web Token. Tinka ir visa Authorization: Bearer … eilutė: priešdėlis Bearer ir eilučių lūžiai pašalinami.
  2. Žetonas dekoduojamas jam renkant (arba spustelėk Dekoduoti). Antraštė ir Turinys (payload) rodomi kaip suformatuotas JSON, kiekvienas su savo mygtuku Kopijuoti.
  3. Peržiūrėk lentelę Laiko laukai: exp, nbf ir iat rodomi su pradine reikšme, data tavo laiko juostoje, santykiniu laiku („po 3 valandų“, „prieš 2 dienas“) ir būsena, pavyzdžiui, Nebegalioja arba Dar negalioja.
  4. Perskaityk įspėjimus virš rezultatų, pavyzdžiui, kai alg yra none arba kai data panaši į milisekundes.
  5. Norint patikrinti parašą, skiltyje Patikrinti parašą įvesk raktą ir spustelėk Tikrinti parašą.

Dekoduoti nereiškia patikrinti

JWT yra trys Base64url dalys, atskirtos taškais: antraštė.turinys.parašas. Antraštė ir turinys yra tik užkoduoti, o ne užšifruoti, todėl juos gali perskaityti kiekvienas, turintis žetoną, o šis įrankis dekoduoja bet kurį žetoną be rakto. Tai taip pat reiškia, kad dekoduotas turinys nieko neįrodo: kažkas galėjo jį pakeisti. Tik tinkamas parašas parodo, kad žetoną išdavė rakto turėtojas ir kad jis nuo to laiko nebuvo keistas. Todėl būsenos eilutėje rašoma „Iššifruota (parašas netikrintas).“, kol parašo netikrini.

Žetonas iš penkių dalių yra JWE (užšifruotas JWT); jo turinio negalima perskaityti be iššifravimo rakto, ir įrankis apie tai praneša.

Parašo tikrinimas

  • HS256, HS384, HS512 (HMAC): įvesk bendrą Slaptą raktą. Per Slapto rakto formatas nurodyk, ar tai paprastas tekstas (UTF-8), ar Base64/Base64url, nes kai kurie tiekėjai slaptus raktus saugo Base64 formatu. Taip pat gali įklijuoti oct tipo JWK. Jei slaptas raktas trumpesnis už maišos išvestį (HS256 atveju 32 baitai), įrankis pastebi, kad jis mažesnis už RFC 7518 minimumą.
  • RS256/384/512, PS256/384/512, ES256/384/512 ir EdDSA: įklijuok Viešasis raktas (PEM arba JWK). Priimami PEM blokai PUBLIC KEY, RSA PUBLIC KEY ir CERTIFICATE (raktas nuskaitomas iš X.509 sertifikato). Tinka ir JWK, ir visas JWK rinkinys: naudojamas raktas, kurio kid sutampa su antraštės reikšme. Privatieji raktai atmetami; tikrintojui jų niekada nereikia. EdDSA palaiko Ed25519 naršyklėse, kuriose tai įgyvendina Web Crypto.

Tikrinimui naudojama naršyklės Web Crypto API. Rezultatas „Netinkamas parašas“ reiškia, kad raktas blogas arba žetonas buvo pakeistas. Atkreipk dėmesį: algoritmas imamas iš žetono antraštės, o tikras serveris privalo laukiamą algoritmą nustatyti savo konfigūracijoje, kitaip jį galėtų pasirinkti užpuolikas.

Saugumo pastabos

  • Žetonai yra prisijungimo duomenys. Kas turi galiojantį prieigos žetoną, paprastai gali veikti jo savininko vardu, kol žetonas nustos galioti. Šis įrankis viską dekoduoja ir tikrina tavo naršyklėje ir niekada niekur nesiunčia nei žetono, nei rakto. Vis dėlto saugokis klijuoti darbinių aplinkų žetonus į įrankius, kurių negali patikrinti.
  • alg: none reiškia, kad žetonas nepasirašytas. Bet kas gali tokį suklastoti, todėl serveris turi jį atmesti. Įrankis rodo įspėjimą ir atsisako „tikrinti“ tokį žetoną.
  • Laiko patikros čia naudoja tavo kompiuterio laikrodį be jokio leidžiamo nuokrypio; serveriai dažnai toleruoja minutės ar dviejų laikrodžių skirtumą.
  • JWT datos (NumericDate) yra sekundės nuo 1970 m. sausio 1 d. UTC. 13 skaitmenų reikšmė greičiausiai yra milisekundės, o tai dažna klaida.

Dažnai užduodami klausimai

Ar šis įrankis gali pasakyti, ar žetonas galioja?

Jis gali pasakyti, ar parašas sutampa su tavo pateiktu raktu ir ar šiuo metu tenkinamos exp bei nbf sąlygos. Ar žetonas bus priimtas, priklauso ir nuo patikrų, kurias žino tik serveris: laukiamo išdavėjo (iss), auditorijos (aud), algoritmo ir atšaukimo.

Kodėl tikrinimas nepavyksta su teisingu slaptu raktu?

Patikrink Slapto rakto formatas: Base64 slaptas raktas, įvestas kaip tekstas, duoda kitą raktą. Taip pat įsitikink, kad prie slapto rakto neprisidėjo tarpas ar eilutės lūžis, nes HMAC raktai lyginami baitas po baito.

Kuo skiriasi RS256, PS256 ir ES256?

Visi trys yra viešojo rakto parašai su SHA-256. RS256 naudoja RSA su PKCS#1 v1.5 užpildu, PS256 naudoja RSA su PSS užpildu, o ES256 naudoja ECDSA su P-256 kreive, todėl parašai gerokai trumpesni.

Kur rasti tiekėjo viešąjį raktą?

Tapatybės tiekėjai skelbia JWKS (JSON Web Key Set), dažniausiai nurodytą /.well-known/openid-configuration faile laukelyje jwks_uri. Atidaryk jį pats ir įklijuok JSON čia; įrankis parenka raktą pagal kid ir niekada nieko nesisiunčia.

Ar saugu čia klijuoti savo žetoną?

Žetonas lieka tavo įrenginyje: dekodavimas ir tikrinimas vyksta vietoje, nieko neįkeliama. Jei nori būti dar atsargesnis, o reikia tik pažiūrėti struktūrą, naudok pasibaigusį arba bandomąjį žetoną.