CodeKitHub
Kodirna orodja

Dekodirnik JWT

Nazadnje posodobljeno:

Prilepi kateri koli JWT (JSON Web Token) in v trenutku vidiš dekodirano in formatirano glavo ter vsebino — vključno s tem, ali je žeton potekel. Vse se zgodi v tvojem brskalniku: žeton se nikamor ne pošilja, prav tako se ne preverja podpis (orodje zgolj dekodira, ne preverja pristnosti žetona).

Header

Payload

Decoded entirely in your browser — no signature verification, and the token is never sent anywhere.

Kaj je to orodje?

JWT (JSON Web Token) je kompakten, URL-varen niz, ki prenaša trditve (claims) med dvema stranema — najpogosteje kot avtentikacijski žeton po prijavi. Sestavljen je iz treh delov, ločenih s pikami: glave (algoritem in tip žetona), vsebine (dejanske trditve — ID uporabnika, vloge, veljavnost ipd.) in podpisa (s katerim strežnik preveri, da žeton ni bil spremenjen).

Glava in vsebina sta zgolj Base64URL kodiran JSON — ne šifrirana — zato ju lahko vsak dekodira in prebere brez skrivnega ključa. Za preverjanje je potreben skrivni ključ le pri podpisu. Točno to počne to orodje: dekodira berljiva dela in ju prikaže kot formatiran JSON, ne da bi poskušalo preveriti podpis.

JWT-ji so standardizirani v RFC 7519, plast podpisa (JWS) pa ločeno v RFC 7515 — koristno vira, če potrebuješ uraden seznam registriranih trditev, kot so exp, iat, sub in aud.

Zakaj ga uporabiti?

  • Takoj berljiva glava in vsebina, formatirani kot JSON — ni več ročnega razčlenjevanja niza in Base64 dekodiranja.
  • Samodejno preverjanje veljavnosti: če vsebina vsebuje trditev "exp", se pretvori v berljiv datum in označi kot potekla ali veljavna.
  • Kopiranje z enim klikom za glavo ali vsebino posebej.
  • 100 % lokalno — žeton se dekodira lokalno in nikoli ne prenese, zato je varno tudi za žetone iz produkcijskega sistema.
  • Podpis se ne preverja niti ne trdi, da je preverjen — to je orodje za razhroščevanje/pregled, ne validator.

Kako ga uporabljati

  1. Prilepi svoj JWT v polje (celoten niz, vključno z vsemi tremi deli, ločenimi s pikami).
  2. Glava in vsebina se dekodirata samodejno med tipkanjem.
  3. Preveri vrstico z veljavnostjo, če ima žeton trditev "exp" — prikaže natančen datum in ali je žeton že potekel.
  4. Klikni "Copy" pod poljem, da kopiraš ta del kot JSON.

Primer

Vnos

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQ

Rezultat

Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}

Podpis (tretji del) se nikoli ne dekodira ali preverja — gre za nepregleden hash, ki se uporablja na strežniški strani za preverjanje pristnosti.

Praktični nasveti

  • Razhroščevanje napak "invalid token": najprej dekodiraj vsebino in preveri trditev "exp" — potekel žeton je najpogostejši vzrok, kar iz same napake ni vedno očitno.
  • Preverjanje, kaj dejansko vsebuje žeton API-ja tretje osebe: mnogi API-ji vrnejo neprosojno izgledajoč JWT kot access token — tukaj ga dekodiraj, da vidiš obseg pravic, ID uporabnika ali veljavnost, ki jo tvoja integracija dejansko prejema.
  • Nikoli ne predpostavljaj, da je JWT šifriran: če med razvojem v dekodirani vsebini vidiš občutljive podatke (e-pošto, interne ID-je), je to znak, da moraš te podatke prestaviti na strežniško stran, namesto da zaupaš, da jih odjemalec ne bo prebral.

Pogoste trditve, ki jih boš videl v vsebini

TrditevPomen
subSubject — običajno ID uporabnika, ki ga žeton predstavlja
expČas poteka (Unix časovni žig) — žeton po tem ni več veljaven
iatIssued at — kdaj je bil žeton ustvarjen
issIssuer — kateri strežnik/storitev je žeton izdala
audAudience — kateri storitvi je žeton namenjen
role / roles / scopePoljubne trditve — dovoljenja ali vloge uporabnika (niso del standarda JWT, a zelo pogoste)

Pogosta vprašanja

Ali to orodje preveri podpis JWT-ja?

Ne. Za preverjanje podpisa je potreben skrivni ali javni ključ, s katerim je bil žeton podpisan, kar ima le izdajatelj. To orodje dekodira zgolj glavo in vsebino — človeku berljiva dela — da lahko pregledaš trditve in veljavnost brez kakršnega koli ključa.

Ali je varno sem prilepiti pravi produkcijski JWT?

Dekodiranje poteka v celoti v tvojem brskalniku prek JavaScripta — žeton se ne pošilja nobenemu strežniku, tudi ne našemu. Kljub temu žetone obravnavaj kot gesla: ne prilepljaj jih v orodja, ki jim ne zaupaš, in ne deli posnetkov zaslona dekodiranih žetonov, ki vsebujejo občutljive trditve.

Zakaj lahko kdorkoli prebere vsebino mojega JWT-ja brez gesla?

To je namerno — glava in vsebina JWT-ja sta Base64URL kodirani, ne šifrirani. Kodiranje ni varnost, samo poskrbi, da je JSON varen za prenos prek URL-ja. Nikoli ne vstavljaj skrivnosti (gesel, številk kreditnih kartic) neposredno v vsebino JWT-ja — predpostavljaj, da lahko vsak, ki ima žeton, prebere njegovo vsebino.

Kaj pomeni trditev "exp" in zakaj je pomembna?

"exp" je čas poteka žetona, izražen kot Unix časovni žig (sekunde od 1970). Strežniki žeton po tem času zavrnejo, kar prisili odjemalca v ponovno avtentikacijo. To orodje ga pretvori v berljiv datum in označi, ali je že potekel, kar je koristno pri razhroščevanju vprašanj tipa "zakaj me je odjavilo".

Moj žeton javlja napako pri razčlenjevanju JSON-a — zakaj?

Bodisi niz ni veljaven JWT (mora imeti natanko tri dele, ločene s pikami), bodisi je bil skrajšan ali spremenjen — pogost vzrok je žeton, ki je bil pri kopiranju po nesreči razdeljen v več vrstic ali mu manjkajo zaključni znaki.

Sorodna orodja