← Kaikki työkalut

JWT-purkaja

Pura mikä tahansa JSON Web Token selaimessasi. Lue otsikko, hyötykuorma ja väitteet heti ja paikallisesti. Purku ei ole vahvistus, eikä mitään lähetetä eteenpäin.
Otsikko
Payload

Mitä JWT-purkaja oikeastaan tekee

JSON Web Token (JWT) näyttää pitkältä, läpinäkymättömältä satunnaismerkkijonolta, mutta se ei ole salattu eikä salainen sala. Se on kompakti, URL-turvallinen säiliö, joka kuljettaa jäsenneltyä dataa kahden osapuolen välillä. Liitä token yllä olevaan purkajaan, ja se hajottaa merkkijonon osiinsa ja näyttää sisällä olevan todellisen JSON:in — metadatan, vaateet (claims), kenelle token on tarkoitettu ja milloin se vanhenee. Kaikki tapahtuu suoraan selaimessasi. Tokenia ei koskaan ladata, lokiteta tai lähetetä minnekään, mikä on tärkeää silloin, kun tarkastelemasi asia on aktiivinen istuntotunniste.

JSON Web Token jakautumassa kolmeksi hehkuvaksi Base64url-segmentiksi: header, payload ja signature
Yksi pisteillä eroteltu merkkijono, kolme erillistä osaa: otsikko, hyötykuorma ja allekirjoitus.

Kolme osaa, kaksi pistettä

Jokainen hyvin muodostettu JWT on kolme Base64url-koodattua merkkijonoa pisteillä yhdistettynä: header.payload.signature. Juuri tuo yksittäinen pistemerkki kertoo jäsentäjille, mistä yksi osio päättyy ja seuraava alkaa, ja siksi token, jossa on väärä määrä pisteitä, hylätään ennen kuin mitään edes luetaan.

Otsikko (header) on pieni JSON-olio, joka kuvaa itse tokenia. Se sisältää lähes aina kentän typ (tyyppi, yleensä JWT) ja alg — allekirjoitusalgoritmin, kuten HS256 (HMAC SHA-256:lla) tai RS256 (RSA SHA-256:lla). Otsikko kertoo varmentajalle täsmälleen, miten allekirjoitus tuotettiin.

Hyötykuorma (payload) on osa, josta useimmat välittävät eniten. Se on toinen JSON-olio, joka sisältää vaateet (claims) — väittämiä käyttäjästä ja tokenista. Määrittely jakaa vaateet rekisteröityihin (standardi, varatut nimet), julkisiin ja yksityisiin (mukautetut nimet, jotka keksit omaa sovellustasi varten). Hyötykuorman purkaminen paljastaa, kuka on kirjautuneena, mikä rooli hänellä on ja milloin hänen istuntonsa päättyy.

Allekirjoitus (signature) on kryptografinen sinetti. Se lasketaan koodatun otsikon ja hyötykuorman yli käyttäen otsikossa mainittua algoritmia sekä salaista tai yksityistä avainta. Koska se kattaa molemmat muut osiot, mikä tahansa muutos otsikossa tai hyötykuormassa — jopa yksi ainoa merkki — mitätöi sen.

Vaateet, joita näet useimmin

Rekisteröidyt vaateet ovat lyhyitä, kolmikirjaimisia nimiä, jotka RFC 7519 määrittelee, jotta eri järjestelmät voivat toimia yhteen. Kourallinen niistä näkyy lähes kaikkialla:

  • ississuer: kuka myönsi tokenin (tunnistuspalvelimesi tai identiteetintarjoajasi).
  • subsubject: pääkohde, jota token koskee, tyypillisesti pysyvä käyttäjätunnus.
  • audaudience: vastaanottaja, jolle token on tarkoitettu. API:n tulisi hylätä tokenit, joiden kohdeyleisö ei ole se itse.
  • expexpiration time: Unix-aikaleima, jonka jälkeen tokenia ei saa enää hyväksyä.
  • iatissued at: Unix-aikaleima, jolloin token luotiin.

Voit törmätä myös kenttiin nbf (not before) ja jti (yksilöllinen tokentunnus). Aikaleimat ovat sekunteja vuodesta 1970 UTC-aikana, minkä vuoksi purkaja, joka esittää ne ihmisen luettavina päivämäärinä, säästää sinut päänvaivalta tarkistaa, onko token jo vanhentunut.

Purkaminen ei ole varmentamista — tämä on kohta, joka pistää monia

Tämä ero on tärkein yksittäinen asia ymmärtää JWT:istä. Purkaminen tarkoittaa sisällön lukemista: se ei vaadi avainta, ja kuka tahansa tokenin haltija voi tehdä sen, koska Base64url on koodaus, ei salaus. Varmentaminen tarkoittaa sen todistamista, että token on aito ja koskematon — laskemalla allekirjoitus uudelleen oikealla salaisella tai julkisella avaimella ja vahvistamalla, että se täsmää.

Tämä työkalu purkaa. Se näyttää, mitä token sanoo, ei sitä, onko token luotettava. Token voi olla väärennetty, vanhentunut tai uudelleen toistettu ja silti purkautua täysin siistiltä näyttäväksi JSON:iksi. Älä koskaan tee käyttöoikeuspäätöstä pelkkien purettujen vaateiden perusteella. Tuotannossa varmennat allekirjoituksen palvelinpuolella, tarkistat kentän exp, ja vahvistat, että iss ja aud vastaavat odottamaasi — käyttäen testattua kirjastoa, et koskaan käsin kirjoitettua merkkijonovertailua.

Hehkuva token avautumassa ja tarkasteltavana kultaisen allekirjoitussinetin vieressä, joka todistaa aitouden
Kuka tahansa voi lukea tokenin. Vain avaimen haltija voi todistaa sen aidoksi.

Hyötykuorma ei ole holvi

Koska hyötykuorma on vain Base64url-koodattu, kuka tahansa tokenin siepannut voi lukea sen. Kohtele kaikkea sen sisällä julkisena. Älä laita salasanoja, täysiä luottokorttinumeroita, salaisia avaimia tai mitään arkaluontoista henkilötietoa JWT-vaateisiin — jos sinä voit purkaa sen tässä yhdellä klikkauksella, niin voi kuka tahansa muukin kopion saanut. Allekirjoitus suojaa muokkaukselta, ei koskaan lukemiselta. Jos aidosti tarvitset piilottaa hyötykuorman sisällön, se on JWE:n (salattujen tokenien) tehtävä, joka on kokonaan eri määrittely.

Yksityisyys ja liittyvät työkalut

Tokenin tarkastaminen on arkaluontoinen teko, joten tämä purkaja toimii kokonaan asiakaspuolella — jäsennys on pelkkää JavaScriptiä välilehdelläsi eikä mikään poistu koneeltasi. Istuntotokenin liittäminen palvelinpohjaiseen työkaluun tarkoittaisi aktiivisen tunnistetiedon luovuttamista kolmannelle osapuolelle, mikä on juuri sitä, mitä kannattaa välttää. Itse koodauksen taustalla katso Base64-työkaluamme, ja tutustu muihin kehittäjätyökaluihimme löytääksesi lisää laitteella toimivia apuvälineitä.

Usein kysytyt kysymykset

Onko JWT salattu?

Ei. Tavallinen JWT on Base64url-koodattu, ei salattu. Kuka tahansa tokenin haltija voi lukea otsikon ja hyötykuorman. Käytä JWE:tä, jos tarvitset sisällön piilotettavaksi.

Varmentaako tämä työkalu allekirjoituksen?

Ei. Se vain purkaa ja näyttää otsikon ja hyötykuorman. Allekirjoituksen varmentaminen vaatii myöntäjän salaisen tai julkisen avaimen, ja se tulisi tehdä palvelimellasi.

Onko tokenini liittäminen tänne turvallista?

Kyllä. Purku tapahtuu kokonaan selaimessasi paikallisen JavaScriptin avulla. Tokenia ei koskaan ladata, tallenneta tai lähetetä millekään palvelimelle.

Mitä iss, sub, aud, exp ja iat tarkoittavat?

Ne ovat rekisteröityjä vaateita: myöntäjä, kohde, yleisö, vanhenemisaika ja myöntämisaika. Kolme aikaan liittyvää käyttävät Unix-aikaleimoja sekunteina.

Voinko luottaa purkamisen jälkeen näytettyihin vaateisiin?

Ei pelkästään niiden perusteella. Puretut vaateet voivat olla peräisin väärennetystä tai vanhentuneesta tokenista. Varmenna aina allekirjoitus ja tarkista vanheneminen palvelinpuolella ennen kuin luotat niihin.

Miksi tokenissani on kolme pisteillä eroteltua osaa?

Ne ovat otsikko, hyötykuorma ja allekirjoitus, kukin Base64url-koodattu ja yhdistetty pisteillä. Pisteet kertovat jäsentäjille, mistä kukin osio alkaa ja päättyy.