Utilia

JWT-dekooderi

Pura JWT:n otsake ja sisältö, lue exp, iat ja nbf päivämäärinä ja tarkista HS256-, RS256-, PS256-, ES256- tai EdDSA-allekirjoitus selaimessasi.

Tokenit ovat tunnistetietoja. Tämä työkalu purkaa ja tarkistaa ne selaimessasi eikä lähetä niitä minnekään.

Tarkista allekirjoitus

HS256/384/512: anna jaettu salaisuus. RS, PS, ES (256/384/512) ja EdDSA: liitä julkinen avain PEM-muodossa (julkinen avain, RSA-julkinen avain tai varmenne) tai JWK:na (JWK Set haetaan kid-arvon perusteella).

Näin puret JWT:n

  1. Liitä token kenttään JSON Web Token. Myös koko Authorization: Bearer … -arvo kelpaa: Bearer-etuliite ja rivinvaihdot poistetaan automaattisesti.
  2. Token puretaan kirjoittaessasi (tai napsauta Pura). Otsake ja Sisältö näkyvät muotoiltuna JSONina, ja kummallakin on oma Kopioi-painike.
  3. Lue Aikakentät-taulukko: exp, nbf ja iat näytetään raakaarvona, päivämääränä omalla aikavyöhykkeelläsi, suhteellisena aikana (“3 tunnin kuluttua”, “2 päivää sitten”) ja tilana, kuten Vanhentunut tai Ei vielä voimassa.
  4. Tarkista tulosten yläpuolella olevat varoitukset, esimerkiksi kun alg on none tai kun päivämäärä näyttää olevan millisekunteja.
  5. Allekirjoituksen voit tarkistaa antamalla avaimen kohdassa Tarkista allekirjoitus ja napsauttamalla Tarkista allekirjoitus -painiketta.

Purkaminen ei ole tarkistamista

JWT koostuu kolmesta pisteillä erotetusta Base64url-osasta: otsake.sisältö.allekirjoitus. Otsake ja sisältö on vain koodattu, ei salattu, joten kuka tahansa tokenin haltija voi lukea ne, ja tämä työkalu purkaa minkä tahansa tokenin ilman avainta. Siksi puretun sisällön perusteella ei voi päätellä mitään luotettavaa: joku on voinut muokata sitä. Vasta kelvollinen allekirjoitus osoittaa, että token on peräisin avaimen haltijalta eikä sitä ole muutettu. Tilarivillä lukee siksi “Purettu (allekirjoitusta ei ole tarkistettu)”, kunnes tarkistat sen.

Jos tokenissa on viisi osaa, se on JWE eli salattu JWT. Sen sisältöä ei voi lukea ilman salauksen purkuavainta, ja työkalu kertoo tämän.

Allekirjoituksen tarkistaminen

  • HS256, HS384, HS512 (HMAC): anna jaettu Salaisuus. Kohdassa Salaisuuden muoto valitset, onko se tavallista tekstiä (UTF-8) vai Base64/Base64urlia, sillä jotkin palveluntarjoajat tallentavat salaisuudet Base64-muodossa. Voit myös liittää oct-tyyppisen JWK:n. Jos salaisuus on lyhyempi kuin tiivisteen pituus (32 tavua HS256:ssa), työkalu huomauttaa, että se alittaa RFC 7518:n vähimmäisvaatimuksen.
  • RS256/384/512, PS256/384/512, ES256/384/512 ja EdDSA: liitä Julkinen avain (PEM tai JWK). Hyväksyttyjä PEM-lohkoja ovat PUBLIC KEY, RSA PUBLIC KEY ja CERTIFICATE (avain luetaan X.509-varmenteesta). Myös JWK tai kokonainen JWK Set käy: käytetään avainta, jonka kid vastaa otsakkeen arvoa. Yksityiset avaimet hylätään, koska tarkistaja ei koskaan tarvitse sellaista. EdDSA tukee Ed25519:ää selaimissa, joiden Web Crypto sen toteuttaa.

Tarkistus käyttää selaimen Web Crypto API:a. Tulos “Virheellinen allekirjoitus” tarkoittaa, että avain on väärä tai tokenia on muokattu. Huomaa, että algoritmi luetaan tokenin otsakkeesta: oikean palvelimen on sen sijaan kiinnitettävä odotettu algoritmi omiin asetuksiinsa, muuten hyökkääjä voi valita sen.

Tietoturvahuomioita

  • Tokenit ovat tunnistetietoja. Voimassa olevan käyttöoikeustokenin haltija voi yleensä toimia sen omistajana, kunnes token vanhenee. Tämä työkalu purkaa ja tarkistaa kaiken selaimessasi eikä lähetä tokenia tai avainta minnekään. Vältä silti tuotantotokenien liittämistä työkaluihin, joita et voi tarkastaa.
  • alg: none tarkoittaa allekirjoittamatonta tokenia. Kuka tahansa voi väärentää sellaisen, ja palvelimen on hylättävä se. Työkalu näyttää varoituksen eikä suostu “tarkistamaan” tällaista tokenia.
  • Aikatarkistuksissa käytetään tietokoneesi kelloa ilman toleranssia; palvelimet sallivat usein minuutin tai kahden kellopoikkeaman.
  • JWT-päivämäärät (NumericDate) ovat sekunteja 1.1.1970 UTC:stä. 13-numeroinen arvo on todennäköisesti millisekunteja, mikä on yleinen ohjelmointivirhe.

Usein kysytyt kysymykset

Kertooko työkalu, onko token kelvollinen?

Se kertoo, vastaako allekirjoitus antamaasi avainta ja täyttyvätkö exp ja nbf juuri nyt. Se, hyväksytäänkö token, riippuu myös tarkistuksista, jotka tietää vain palvelin: odotettu myöntäjä (iss), kohdeyleisö (aud), algoritmi ja mitätöinti.

Miksi tarkistus epäonnistuu oikealla salaisuudella?

Tarkista Salaisuuden muoto: Base64-salaisuus syötettynä tekstinä antaa eri avaimen. Varmista myös, ettei salaisuuteen ole tullut ylimääräistä välilyöntiä tai rivinvaihtoa, koska HMAC-avaimia verrataan tavu tavulta.

Mitä eroa on RS256:lla, PS256:lla ja ES256:lla?

Kaikki kolme ovat julkisen avaimen allekirjoituksia SHA-256:lla. RS256 käyttää RSA:ta PKCS#1 v1.5 -täytteellä, PS256 RSA:ta PSS-täytteellä ja ES256 ECDSA:ta P-256-käyrällä, mikä tuottaa selvästi lyhyemmät allekirjoitukset.

Mistä löydän palveluntarjoajan julkisen avaimen?

Tunnistuspalvelut julkaisevat JWKS:n (JSON Web Key Set), johon on yleensä linkki osoitteessa /.well-known/openid-configuration kohdassa jwks_uri. Avaa se itse ja liitä JSON tähän; työkalu valitsee avaimen kid-arvon perusteella eikä hae mitään verkosta.

Onko tokenin liittäminen tähän turvallista?

Token pysyy laitteellasi: purku ja tarkistus tehdään paikallisesti, eikä mitään lähetetä palvelimelle. Jos haluat olla varovainen, käytä vanhentunutta tai testitokenia, kun tarvitset vain rakenteen tarkastelua.