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
- Liitä JWT-tunnuksesi kenttään (koko merkkijono, kaikki kolme pisteellä erotettua osaa mukaan lukien).
- Otsikko ja hyötykuorma puretaan automaattisesti kirjoittaessasi.
- Tarkista vanhenemisrivi, jos tokenissa on "exp"-vaatimus — se näyttää tarkan päivämäärän ja onko token vanhentunut.
- Klikkaa "Kopioi" jomman kumman kentän alla kopioidaksesi kyseisen osan JSON:ina.
Esimerkki
Syöte
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQTuloste
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
| Vaatimus | Merkitys |
|---|---|
| sub | Subject — yleensä käyttäjätunnus, jota token edustaa |
| exp | Vanhenemisaika (Unix-aikaleima) — token on virheellinen tämän jälkeen |
| iat | Issued at — milloin token luotiin |
| iss | Issuer — mikä palvelu/palvelin myönsi tokenin |
| aud | Audience — mille palvelulle token on tarkoitettu |
| role / roles / scope | Mukautettuja 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ä.