tigtools

JWT-generator

Bygg og signer en JSON Web Token for testing, eller sjekk om HMAC-signaturen til et token samsvarer med en hemmelighet. Signering bruker nettleserens Web Crypto API.

Kjører i nettleseren din Ingen registrering

Modus
Hemmeligheten forblir i denne nettleserfanen og sendes aldri noe sted. Likevel bør du ikke lime inn signeringshemmeligheter fra produksjon på noen nettside: alle som har hemmeligheten, kan lage gyldige tokener for systemet ditt. Bruk testhemmeligheter her.

alg settes fra algoritme-menyen; typ er JWT som standard.

Claims som sub, iat og exp. Tidspunkter er i sekunder siden 1970 (UTC).

Skriv inn en hemmelighet for å signere tokenet.

Slik bruker du det

  1. Velg HS256, HS384 eller HS512.
  2. Rediger kravene i payloaden, og klikk «Angi iat og exp» for å legge til gjeldende tid og en utløpstid.
  3. Skriv inn en testhemmelighet, eller generer en tilfeldig 256-biters en.
  4. Kopier det signerte tokenet. For å sjekke et token bytter du til «Verifiser signatur», limer det inn og oppgir hemmeligheten.

Slik fungerer det

En JSON Web Token (RFC 7519) har tre Base64URL-kodede deler: en header, en payload med claims og en signatur. Med HMAC-algoritmene HS256, HS384 og HS512 er signaturen en HMAC med SHA-256, SHA-384 eller SHA-512 over «header.payload», nøklet med en delt hemmelighet. Alle med hemmeligheten kan opprette og verifisere tokens.

Verktøyet serialiserer headeren og payloaden som kompakt JSON, koder dem og signerer dem med crypto.subtle, Web Crypto API-en som er innebygd i nettleseren din. Feltet alg i headeren samsvarer alltid med den valgte algoritmen, typ er som standard JWT, og eventuelle andre headerfelt, for eksempel kid, beholdes. «Set iat and exp» skriver gjeldende tid som iat (issued at) og legger til valgt levetid som exp, begge i sekunder siden 1. januar 1970 UTC. Resultatet samsvarer med andre JWT-biblioteker; for eksempel gjengis den klassiske jwt.io-eksempeltokenen nøyaktig.

Hemmeligheten kan være ren tekst (UTF-8-bytene er nøkkelen) eller Base64/Base64URL-kodede byte, som mange rammeverk bruker. Knappen for tilfeldig hemmelighet oppretter 32 tilfeldige byte med crypto.getRandomValues. For HS256 bør du bruke minst 32 tilfeldige byte; korte menneskevalgte hemmeligheter kan gjettes offline fra et hvilket som helst token.

Verifisering dekoder tokenet, sjekker at det bruker en HMAC-algoritme, og beregner signaturen på nytt med crypto.subtle.verify. Den viser også når exp eller nbf betyr at tokenet er utløpt eller ennå ikke gyldig. RS256, ES256 og andre offentlig-nøkkel-algoritmer støttes ikke, og verifisering her sjekker ikke issuer, audience eller andre claims applikasjonen din kan kreve.

Eksempler

Teste et API lokalt

Utviklingsserveren din forventer HS256-tokens signert med «dev-secret-change-me». Sett sub til en testbruker-ID, klikk «Set iat and exp» med 1 time, skriv inn hemmeligheten og send tokenet i en Authorization: Bearer-header.

Sjekke hvilken hemmelighet som signerte et token

Et staging-token blir avvist. Lim det inn i «Verifiser signatur» og prøv staging-hemmeligheten: «Signaturen er ikke gyldig» forteller deg at tokenet ble signert med en annen hemmelighet, eller at hemmeligheten har et annet format (tekst vs. Base64).

Gjenskape eksempelet fra jwt.io

Med header {"alg":"HS256","typ":"JWT"}, payload {"sub":"1234567890","name":"John Doe","iat":1516239022} og hemmeligheten «your-256-bit-secret», ender tokenet på SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, det samme som på jwt.io.

Ofte stilte spørsmål

Blir hemmeligheten min sendt til serveren din?

Nei. Signering og verifisering kjøres med Web Crypto API i nettleseren din, og hemmeligheten lagres ikke eller sendes noe sted. Vi anbefaler likevel bare testhemmeligheter, fordi en ekte signeringshemmelighet aldri bør skrives inn på et nettsted.

Hvorfor er signaturen ugyldig selv om hemmeligheten er riktig?

Sjekk formatet på hemmeligheten. Noen systemer bruker teksten i hemmeligheten, andre dekoder den fra Base64 først, noe som gir forskjellige nøkkelbyte. Sjekk også at tokenet ikke er endret, og at det bruker samme algoritme.

Kan jeg lage RS256- eller ES256-token?

Ikke med dette verktøyet. Det støtter bare HMAC-algoritmene med delt hemmelighet HS256, HS384 og HS512.

Er payloaden kryptert?

Nei. En signert JWT er bare kodet; alle kan dekode og lese payloaden. Signaturen beviser bare at den ikke er endret. Ikke legg passord eller andre hemmeligheter i payloaden.

Personvern

Token opprettes og verifiseres bare i nettleseren din med Web Crypto API. Header, payload, token og hemmelighet blir ikke lastet opp, lagret eller inkludert i analyser.