CodeKitHub
Koodaustyökalut

JWT-purkaja

Viimeksi päivitetty:

Liitä mikä tahansa JWT (JSON Web Token) ja näe sen otsikko ja hyötykuorma purettuna ja muotoiltuna välittömästi — mukaan lukien onko se vanhentunut. Kaikki tapahtuu selaimessasi: tokenia ei koskaan lähetetä minnekään, eikä allekirjoitusta varmenneta (tämä työkalu vain purkaa sisällön, ei tarkista onko token aito).

Header

Payload

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

Mikä tämä työkalu on?

JWT (JSON Web Token) on kompakti, URL-turvallinen merkkijono, jota käytetään vaatimusten (claims) välittämiseen kahden osapuolen välillä — yleisimmin kirjautumisen jälkeisenä autentikointitokenina. Siinä on kolme pisteellä erotettua osaa: otsikko (algoritmi ja tokenin tyyppi), hyötykuorma (varsinaiset vaatimukset — käyttäjätunnus, roolit, vanhenemisaika jne.) ja allekirjoitus (jota palvelin käyttää varmistaakseen, ettei tokenia ole peukaloitu).

Otsikko ja hyötykuorma ovat vain Base64URL-koodattua JSON:ia — ei salattua — joten kuka tahansa voi purkaa ja lukea ne ilman salaista avainta. Vain allekirjoituksen varmentaminen vaatii salaisuuden. Juuri tätä tämä työkalu tekee: purkaa luettavat osat ja näyttää ne muotoiltuna JSON:ina, yrittämättä varmentaa allekirjoitusta.

JWT:t on standardoitu RFC 7519:ssä, ja allekirjoituskerros (JWS) on määritelty erikseen RFC 7515:ssä — hyödyllisiä lähteitä, kun tarvitset auktoritatiivisen luettelon rekisteröidyistä vaatimuksista kuten exp, iat, sub ja aud.

Miksi käyttää sitä?

  • Välittömästi luettava otsikko ja hyötykuorma, muotoiltuna JSON:ina — ei enää merkkijonon manuaalista pilkkomista ja Base64-purkua käsin.
  • Automaattinen vanhenemistarkistus: jos hyötykuormassa on "exp"-vaatimus, se muunnetaan luettavaksi päivämääräksi ja merkitään vanhentuneeksi tai voimassa olevaksi.
  • Yhden klikkauksen kopiointi otsikolle tai hyötykuormalle erikseen.
  • 100 % selaimessa toimiva — token puretaan paikallisesti eikä sitä koskaan lähetetä, turvallinen käytettäväksi jopa tuotantojärjestelmän tokenien kanssa.
  • Allekirjoitusta ei varmenneta eikä väitetä varmennettavan — tämä on virheenkorjaus- ja tarkastelutyökalu, ei validaattori.

Käyttöohje

  1. Liitä JWT-tunnuksesi kenttään (koko merkkijono, kaikki kolme pisteellä erotettua osaa mukaan lukien).
  2. Otsikko ja hyötykuorma puretaan automaattisesti kirjoittaessasi.
  3. Tarkista vanhenemisrivi, jos tokenissa on "exp"-vaatimus — se näyttää tarkan päivämäärän ja onko token vanhentunut.
  4. Klikkaa "Kopioi" jomman kumman kentän alla kopioidaksesi kyseisen osan JSON:ina.

Esimerkki

Syöte

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQ

Tuloste

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

Allekirjoitusta (kolmas osa) ei koskaan pureta tai tarkisteta — se on läpinäkymätön tiiviste, jota palvelin käyttää aitouden varmentamiseen.

Käytännön vinkkejä

  • "Virheellinen token" -virheiden selvittäminen: pura hyötykuorma ensin tarkistaaksesi "exp"-vaatimuksen — vanhentunut token on yleisin syy, eikä se aina ole ilmeinen pelkästä virheilmoituksesta.
  • Sen tarkistaminen, mitä kolmannen osapuolen API:n token itse asiassa sisältää: monet API:t palauttavat läpinäkymättömän näköisen JWT:n käyttöoikeustokenina — pura se täällä nähdäksesi käyttöoikeudet, käyttäjätunnuksen tai vanhenemisajan, jotka integraatiosi todella saa.
  • Älä koskaan oleta JWT:n olevan salattu: jos näet arkaluontoista dataa (sähköposti, sisäiset tunnisteet) puretussa hyötykuormassa kehityksen aikana, se on merkki siitä, että data pitäisi siirtää palvelinpuolelle sen sijaan, että luotetaan asiakaspuolen olevan lukematta sitä.

Yleisiä vaatimuksia, joita näet hyötykuormassa

VaatimusMerkitys
subSubject — yleensä käyttäjätunnus, jota token edustaa
expVanhenemisaika (Unix-aikaleima) — token on virheellinen tämän jälkeen
iatIssued at — milloin token luotiin
issIssuer — mikä palvelu/palvelin myönsi tokenin
audAudience — mille palvelulle token on tarkoitettu
role / roles / scopeMukautettuja vaatimuksia — käyttäjälle myönnettyjä oikeuksia tai rooleja (ei osa JWT-standardia, mutta erittäin yleisiä)

Usein kysytyt kysymykset

Varmentaako tämä työkalu JWT:n allekirjoituksen?

Ei. Allekirjoituksen varmentaminen vaatii tokenin allekirjoittamiseen käytetyn salaisen tai julkisen avaimen, joka on vain tokenin myöntäneellä palvelimella. Tämä työkalu purkaa vain otsikon ja hyötykuorman — ihmisen luettavissa olevat osat — jotta voit tarkastella vaatimuksia ja vanhenemisaikaa ilman avainta.

Onko turvallista liittää oikea tuotanto-JWT tähän?

Purkaminen tapahtuu kokonaan selaimessasi JavaScriptillä — tokenia ei koskaan lähetetä millekään palvelimelle, ei edes meidän. Silti kannattaa kohdella tokeneita kuin salasanoja: älä liitä niitä työkaluihin, joihin et luota, ja vältä purettujen tokenien kuvakaappausten jakamista, jos ne sisältävät arkaluontoisia vaatimuksia.

Miksi kuka tahansa voi lukea JWT:ni hyötykuorman ilman salasanaa?

Näin on tarkoitettu — JWT:n otsikko ja hyötykuorma ovat Base64URL-koodattuja, ei salattuja. Koodaus ei ole turvallisuutta; se vain tekee JSON:sta URL-turvallisen lähetettäväksi. Älä koskaan laita salaisuuksia (salasanoja, luottokorttinumeroita) suoraan JWT:n hyötykuormaan — oleta, että kuka tahansa tokenin haltija voi lukea sen sisällön.

Mitä "exp"-vaatimus tarkoittaa ja miksi sillä on väliä?

"exp" on tokenin vanhenemisaika Unix-aikaleimana (sekunteina vuodesta 1970). Palvelimet hylkäävät JWT:n, kun tämä aika on ohi, mikä pakottaa asiakkaan kirjautumaan uudelleen. Tämä työkalu muuntaa sen luettavaksi päivämääräksi ja merkitsee, onko se jo vanhentunut, mikä on hyödyllistä "miksi istuntoni kirjautui ulos" -ongelmien selvittämisessä.

Tokenini näyttää JSON-jäsennysvirheen — miksi?

Joko merkkijono ei ole kelvollinen JWT (pitäisi olla täsmälleen kolme pisteellä erotettua osaa), tai se on typistynyt tai muuttunut — yleinen syy on token, joka on vahingossa jakautunut useammalle riville tai josta puuttuu loppumerkkejä kopioinnin yhteydessä.

Liittyvät työkalut