CodeKitHub
Alati za kodiranje

JWT dekoder

Zadnje ažurirano:

Zalijepite bilo koji JWT (JSON Web Token) i pogledajte njegovo zaglavlje i sadržaj dekodirane i formatirane trenutno — uključujući je li istekao. Sve se odvija u vašem pregledniku: token se nikad nikamo ne šalje, a provjera potpisa se ne izvodi (ovaj alat samo dekodira, ne provjerava je li token pravi).

Header

Payload

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

Što je ovaj alat?

JWT (JSON Web Token) je kompaktan, URL-sigurni string koji nosi tvrdnje (claims) između dvije strane — najčešće kao token za autentifikaciju nakon prijave. Ima tri dijela odvojena točkama: zaglavlje (algoritam i tip tokena), sadržaj (stvarne tvrdnje — ID korisnika, uloge, istek itd.) i potpis (koji server koristi za provjeru da token nije mijenjan).

Zaglavlje i sadržaj samo su Base64URL-kodirani JSON — nisu šifrirani — pa ih svatko može dekodirati i pročitati bez tajnog ključa. Samo potpis zahtijeva tajni ključ za provjeru. Upravo to ovaj alat radi: dekodira čitljive dijelove i prikazuje ih kao formatirani JSON, bez pokušaja provjere potpisa.

JWT-ovi su standardizirani u RFC 7519, s razinom potpisa (JWS) definiranom zasebno u RFC 7515 — korisne reference kad vam treba autoritativan popis registriranih tvrdnji poput exp, iat, sub i aud.

Zašto ga koristiti?

  • Trenutno čitljivo zaglavlje i sadržaj, formatirani kao JSON — više nema ručnog razdvajanja stringa i Base64-dekodiranja.
  • Automatska provjera isteka: ako sadržaj ima tvrdnju "exp", pretvara se u čitljiv datum i označava kao istekao ili valjan.
  • Kopiranje jednim klikom za zaglavlje ili sadržaj zasebno.
  • 100% na strani klijenta — token se dekodira lokalno i nikad ne prenosi, sigurno za korištenje čak i s tokenima iz produkcijskog sustava.
  • Provjera potpisa se ne izvodi niti tvrdi — ovo je alat za debagiranje/inspekciju, ne validator.

Kako ga koristiti

  1. Zalijepite svoj JWT u okvir (cijeli string, uključujući sva tri dijela odvojena točkama).
  2. Zaglavlje i sadržaj dekodiraju se automatski dok tipkate.
  3. Provjerite redak isteka ako token ima tvrdnju "exp" — prikazuje točan datum i je li token istekao.
  4. Kliknite "Copy" ispod bilo kojeg okvira da kopirate taj dio kao JSON.

Primjer

Ulaz

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQ

Izlaz

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

Potpis (treći dio) nikad se ne dekodira niti provjerava — to je neproziran hash koji se koristi na strani servera za provjeru autentičnosti.

Praktični savjeti

  • Debagiranje grešaka "invalid token": prvo dekodirajte sadržaj da provjerite tvrdnju "exp" — istekao token najčešći je uzrok, i nije uvijek očit iz same poruke greške.
  • Provjera što stvarno sadrži token neke API-ja treće strane: mnogi API-ji vraćaju naizgled neproziran JWT kao pristupni token — dekodirajte ga ovdje da vidite opseg, ID korisnika ili istek koji vaša integracija zapravo prima.
  • Nikad ne pretpostavljajte da je JWT šifriran: ako tijekom razvoja vidite osjetljive podatke (e-mail, interne ID-ove) u dekodiranom sadržaju, to je signal da tu podatak premjestite na stranu servera umjesto da vjerujete da klijent neće to pročitati.

Uobičajene tvrdnje koje ćete vidjeti u sadržaju

TvrdnjaZnačenje
subSubjekt — obično ID korisnika kojeg token predstavlja
expVrijeme isteka (Unix vremenska oznaka) — token nije valjan nakon ovoga
iatIzdano u — kad je token stvoren
issIzdavatelj — koja usluga/server je izdao token
audPublika — kojoj je usluzi token namijenjen
role / roles / scopePrilagođene tvrdnje — dozvole ili uloge dodijeljene korisniku (nisu dio JWT standarda, ali izuzetno česte)

Često postavljana pitanja

Provjerava li ovaj alat potpis JWT-a?

Ne. Provjera potpisa zahtijeva tajni ili javni ključ korišten za potpisivanje tokena, koji ima samo server koji ga izdaje. Ovaj alat samo dekodira zaglavlje i sadržaj — čitljive dijelove — tako da možete pregledati tvrdnje i istek bez ikakvog ključa.

Je li sigurno ovdje zalijepiti pravi produkcijski JWT?

Dekodiranje se odvija u potpunosti u vašem pregledniku putem JavaScripta — token se nikad ne šalje ni na jedan server, uključujući naš. Ipak, tretirajte tokene kao lozinke: ne lijepite ih u alate kojima ne vjerujete i izbjegavajte dijeljenje snimki zaslona dekodiranih tokena koji sadrže osjetljive tvrdnje.

Zašto svatko može pročitati sadržaj mog JWT-a bez lozinke?

Po dizajnu — zaglavlje i sadržaj JWT-a su Base64URL-kodirani, ne šifrirani. Kodiranje nije sigurnost; samo čini JSON URL-sigurnim za prijenos. Nikad ne stavljajte tajne (lozinke, brojeve kreditnih kartica) izravno u sadržaj JWT-a — pretpostavite da svatko tko ima token može pročitati njegov sadržaj.

Što znači tvrdnja "exp" i zašto je važna?

"exp" je vrijeme isteka tokena, kao Unix vremenska oznaka (sekunde od 1970.). Serveri odbijaju JWT nakon što ovo vrijeme prođe, prisiljavajući klijenta na ponovnu autentifikaciju. Ovaj alat pretvara je u čitljiv datum i označava je li već istekao, što je korisno za debagiranje problema poput "zašto se moja sesija odjavila".

Moj token prikazuje grešku parsiranja JSON-a — zašto?

Ili string nije valjan JWT (treba biti točno tri dijela odvojena točkama), ili je skraćen ili izmijenjen — čest uzrok je token slučajno podijeljen u više redaka ili nedostajući krajnji znakovi pri kopiranju.

Povezani alati