← Alle gereedskap

JWT-dekodeerder

Dekodeer enige JSON Web Token in jou blaaier. Lees die kop, vrag en eise onmiddellik en plaaslik. Dekodering is nie verifikasie nie, en niks verlaat jou toestel nie.
Opskrif
Inhoud

Wat 'n JWT-dekodeerder werklik doen

'n JSON Web Token (JWT) lyk soos 'n lang, ondeurskynende string ewekansige karakters, maar dit is nie geënkripteer nie en dit is nie 'n geheime syfer nie. Dit is 'n kompakte, URL-veilige houer wat gestruktureerde data tussen twee partye dra. Plak 'n token in die dekodeerder hierbo en dit skei daardie string uitmekaar en wys jou die werklike JSON binne-in — die metadata, die aansprake, vir wie die token bedoel is, en wanneer dit verval. Alles gebeur reg in jou blaaier. Die token word nooit opgelaai, aangeteken, of êrens gestuur nie, wat baie saak maak wanneer die ding wat jy ondersoek 'n lewende sessiebewys is.

'n JSON Web Token wat opsplits in drie gloeiende Base64url-segmente: kop, vrag en handtekening
Een string met kolletjies, drie duidelike dele: kop, vrag en handtekening.

Drie dele, twee kolletjies

Elke welgevormde JWT is drie Base64url-geënkodeerde stringe verbind deur kolletjies: header.payload.signature. Daardie enkele kolletjie-karakter is hoe ontleders weet waar een afdeling eindig en die volgende begin, en dit is waarom 'n token met die verkeerde aantal kolletjies verwerp word voordat enigiets anders eers gelees word.

Die kop is 'n klein JSON-objek wat die token self beskryf. Dit bevat byna altyd typ (die tipe, gewoonlik JWT) en alg — die ondertekeningsalgoritme, soos HS256 (HMAC met SHA-256) of RS256 (RSA met SHA-256). Die kop vertel 'n verifieerder presies hoe die handtekening geproduseer is.

Die vrag is die deel waaroor die meeste mense omgee. Dit is nog 'n JSON-objek wat die aansprake (claims) bevat — stellings oor die gebruiker en die token. Die spesifikasie sorteer aansprake in geregistreerde (standaard, gereserveerde name), publieke, en private (aangepaste name wat jy vir jou eie app uitvind). Om die vrag te dekodeer, openbaar wie aangemeld is, watter rol hulle het, en wanneer hul sessie verval.

Die handtekening is die kriptografiese seël. Dit word bereken oor die geënkodeerde kop en vrag met behulp van die algoritme uit die kop plus 'n geheim of privaat sleutel. Omdat dit die ander twee afdelings dek, maak enige verandering aan die kop of vrag — selfs 'n enkele karakter — dit ongeldig.

Die aansprake wat jy die meeste sal sien

Die geregistreerde aansprake is kort, drie-letter name gedefinieer deur RFC 7519 sodat verskillende stelsels kan saamwerk. 'n Handjievol verskyn byna orals:

  • ississuer (uitreiker): wie die token uitgereik het (jou verifikasiebediener of identiteitsverskaffer).
  • subsubject (onderwerp): die entiteit waaroor die token gaan, tipies 'n stabiele gebruikers-ID.
  • audaudience (gehoor): die ontvanger vir wie die token bedoel is. 'n API behoort tokens te verwerp waarvan die gehoor nie homself is nie.
  • expexpiration time (vervaltyd): 'n Unix-tydstempel waarna die token nie aanvaar mag word nie.
  • iatissued at (uitgereik op): die Unix-tydstempel toe die token geskep is.

Jy mag ook nbf (not before) en jti ('n unieke token-ID) teëkom. Tydstempels is sekondes sedert 1970 in UTC, wat waarom 'n dekodeerder wat hulle as mensleesbare datums weergee, jou die geestesberekening bespaar om te kyk of 'n token reeds verval het.

Dekodering is nie verifiëring nie — hier is waar mense gebyt word

Hierdie onderskeid is die enkele belangrikste ding om oor JWT's te verstaan. Dekodering beteken om die inhoud te lees: dit vereis geen sleutel nie en enigiemand met die token kan dit doen, want Base64url is 'n enkodering, nie enkripsie nie. Verifiëring beteken om te bewys dat die token eg en onaangeraak is — die handtekening herbereken met die korrekte geheim of publieke sleutel en bevestig dat dit ooreenstem.

Hierdie instrument dekodeer. Dit wys jou wat die token , nie of die token betroubaar is nie. 'n Token kan vervals, verval, of herhaal wees en steeds in perfek skoon-lykende JSON dekodeer. Neem nooit 'n magtigingsbesluit slegs op grond van gedekodeerde aansprake nie. In produksie verifieer jy die handtekening bedienerkant, kontroleer exp, en bevestig dat iss en aud ooreenstem met wat jy verwag — met 'n beproefde biblioteek, nooit selfgemaakte stringvergelyking nie.

'n Gloeiende token wat oopgevou en ondersoek word langs 'n goue handtekeningseël wat egtheid bewys
Enigiemand kan 'n token lees. Slegs die houer van die sleutel kan bewys dit is eg.

'n Vrag is nie 'n kluis nie

Omdat die vrag slegs Base64url-geënkodeer is, is dit leesbaar deur enigiemand wat die token onderskep. Behandel alles daarin as publiek. Moenie wagwoorde, volledige kredietkaartnommers, geheime sleutels, of enige sensitiewe persoonlike data in JWT-aansprake plaas nie — as jy dit hier met een klik kan dekodeer, kan enigiemand anders wat 'n kopie kry, dit ook. Die handtekening beskerm teen wysiging, nooit teen lees nie. As jy werklik die vraginhoud moet wegsteek, is dit 'n taak vir JWE (geënkripteerde tokens), 'n heeltemal ander spesifikasie.

Privaatheid en verwante instrumente

Om 'n token te ondersoek is 'n sensitiewe handeling, dus loop hierdie dekodeerder heeltemal kliëntkant — die ontleding is gewone JavaScript in jou blad en niks verlaat jou masjien nie. Om 'n sessietoken in 'n bediener-gesteunde instrument te plak, beteken om 'n lewende bewys aan 'n derde party te gee, wat presies is wat jy moet vermy. Vir die enkodering wat alles onderlê, sien ons Base64-instrument, en verken die res van ons ontwikkelaarinstrumente vir meer op-toestel-nutsmiddels.

Gereelde vrae

Is 'n JWT geënkripteer?

Nee. 'n Standaard-JWT is Base64url-geënkodeer, nie geënkripteer nie. Enigiemand met die token kan die kop en vrag lees. Gebruik JWE as jy die inhoud moet wegsteek.

Verifieer hierdie instrument die handtekening?

Nee. Dit dekodeer en wys slegs die kop en vrag. Om die handtekening te verifieer, vereis die uitreiker se geheim of publieke sleutel en moet op jou bediener gedoen word.

Is dit veilig om my token hier te plak?

Ja. Dekodering vind heeltemal binne jou blaaier plaas met plaaslike JavaScript. Die token word nooit opgelaai, gestoor, of na enige bediener gestuur nie.

Wat beteken iss, sub, aud, exp en iat?

Dit is geregistreerde aansprake: uitreiker, onderwerp, gehoor, vervaltyd en uitgereik-op-tyd. Die drie tydverwante beteken Unix-tydstempels in sekondes.

Kan ek die aansprake vertrou wat na dekodering gewys word?

Nie op hul eie nie. Gedekodeerde aansprake kan van 'n vervalste of verstreke token kom. Verifieer altyd die handtekening en kontroleer verval bedienerkant voordat jy hulle vertrou.

Waarom het my token drie dele geskei deur kolletjies?

Dit is die kop, vrag en handtekening, elk Base64url-geënkodeer en verbind deur kolletjies. Die kolletjies vertel ontleders waar elke afdeling begin en eindig.