tigtools

JWT-generaattori

Luo ja allekirjoita JSON Web Token testausta varten tai tarkista, vastaako tokenin HMAC-allekirjoitus salaisuutta. Allekirjoitus käyttää selaimesi Web Crypto API:a.

Toimii selaimessasi Ei rekisteröitymistä

Tila
Salaisuus pysyy tässä selainvälilehdessä eikä sitä lähetetä minnekään. Älä silti liitä tuotannon allekirjoitussalaisuuksia millekään verkkosivustolle: kuka tahansa, jolla on salaisuus, voi luoda kelvollisia tokeneita järjestelmääsi. Käytä täällä testisalaisuuksia.

alg tulee algoritmivalikosta; typ on oletuksena JWT.

Väitteet, kuten sub, iat ja exp. Ajat ovat sekunteja vuoden 1970 alusta (UTC).

Anna salaisuus tokenin allekirjoittamiseen.

Käyttöohje

  1. Valitse HS256, HS384 tai HS512.
  2. Muokkaa payloadin kenttiä ja valitse ”Aseta iat ja exp” lisätäksesi nykyisen ajan ja vanhentumisajan.
  3. Syötä testisalaisuus tai luo satunnainen 256-bittinen salaisuus.
  4. Kopioi allekirjoitettu token. Jos haluat tarkistaa tokenin, siirry kohtaan ”Varmenna allekirjoitus”, liitä token ja syötä salaisuus.

Näin se toimii

JSON Web Token (RFC 7519) koostuu kolmesta Base64URL-koodatusta osasta: otsikosta (header), väittämät sisältävästä hyötykuormasta (payload) ja allekirjoituksesta. HMAC-algoritmeilla HS256, HS384 ja HS512 allekirjoitus on HMAC, joka lasketaan SHA-256-, SHA-384- tai SHA-512-tiivisteellä merkkijonosta “header.payload” ja jonka avaimena on jaettu salaisuus. Kuka tahansa, jolla salaisuus on, voi luoda ja vahvistaa tokeneita.

Työkalu sarjoittaa headerin ja payloadin tiiviiksi JSON:ksi, koodaa ne ja allekirjoittaa ne crypto.subtlella, selaimeen sisäänrakennetulla Web Crypto APIlla. Headerin alg-kenttä vastaa aina valittua algoritmia, typ on oletuksena JWT, ja muut header-kentät, kuten kid, säilytetään. “Set iat and exp” kirjoittaa nykyisen ajan iat-arvoksi (issued at) ja lisää valitun voimassaoloajan exp-arvoksi; molemmat ovat sekunteja 1. tammikuuta 1970 UTC alkaen. Tulos vastaa muita JWT-kirjastoja; esimerkiksi klassinen jwt.io-esimerkkitoken toistuu tarkasti.

Salaisuus voi olla pelkkää tekstiä (sen UTF-8-tavut ovat avain) tai Base64/Base64URL-koodattuja tavuja, joita monet kehykset käyttävät. Satunnaisen salaisuuden painike luo 32 satunnaista tavua crypto.getRandomValuesilla. HS256:ta varten käytä vähintään 32 satunnaista tavua; lyhyet, ihmisen valitsemat salaisuudet voidaan arvata offline-tilassa mistä tahansa tokenista.

Varmennus dekoodaa tokenin, tarkistaa, että se käyttää HMAC-algoritmia, ja laskee allekirjoituksen uudelleen crypto.subtle.verify-funktiolla. Se näyttää myös, milloin exp tai nbf tarkoittaa tokenin vanhentuneen tai ettei se ole vielä voimassa. RS256-, ES256- ja muita julkisen avaimen algoritmeja ei tueta, eikä tämä varmennus tarkista issuer-, audience- tai muita väittämiä, joita sovelluksesi saattaa vaatia.

Esimerkit

API:n testaaminen paikallisesti

Kehityspalvelimesi odottaa HS256-tokeneita, jotka on allekirjoitettu avaimella “dev-secret-change-me”. Aseta sub testikäyttäjän tunnukseksi, napsauta “Set iat and exp” ja valitse 1 tunti, syötä salaisuus ja lähetä token Authorization: Bearer -otsakkeessa.

Millä salaisuudella token on allekirjoitettu

Staging-token hylätään. Liitä se ”Varmenna allekirjoitus” -kohtaan ja kokeile staging-salaisuutta: ”Allekirjoitus ei kelpaa” kertoo, että token on allekirjoitettu eri salaisuudella tai salaisuus on eri muodossa (teksti vs. Base64).

jwt.io-esimerkin toistaminen

Kun otsake on {"alg":"HS256","typ":"JWT"}, payload on {"sub":"1234567890","name":"John Doe","iat":1516239022} ja salaisuus on “your-256-bit-secret”, token päättyy osaan SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, kuten jwt.io-sivustolla.

Usein kysytyt kysymykset

Lähetetäänkö salaisuuteni palvelimellenne?

Ei. Allekirjoitus ja varmennus ajetaan selaimesi Web Crypto API:n avulla, eikä salaisuutta tallenneta tai lähetetä minnekään. Suosittelemme silti käyttämään vain testisalaisuuksia, koska oikeaa allekirjoitussalaisuutta ei pitäisi koskaan kirjoittaa verkkosivulle.

Miksi allekirjoitus on virheellinen, vaikka salaisuus on oikea?

Tarkista salaisuuden muoto. Jotkin järjestelmät käyttävät salaisuuden tekstiä, toiset purkavat sen ensin Base64:stä, jolloin avaimen tavut ovat erilaiset. Tarkista myös, ettei tokenia ole muutettu ja että se käyttää samaa algoritmia.

Voinko luoda RS256- tai ES256-tokeneita?

Ei tällä työkalulla. Se tukee vain jaetun salaisuuden HMAC-algoritmeja HS256, HS384 ja HS512.

Onko payload salattu?

Ei. Allekirjoitettu JWT on vain koodattu; kuka tahansa voi purkaa ja lukea payloadin. Allekirjoitus osoittaa vain, ettei tokenia ole muutettu. Älä laita payloadiin salasanoja tai muita salaisuuksia.

Tietosuoja

Tokenit luodaan ja varmennetaan vain selaimessasi Web Crypto API:n avulla. Otsaketta, payloadia, tokenia tai salaisuutta ei ladata, tallenneta tai sisällytetä analytiikkaan.