tigtools

JWT-generator

Skapa och signera en JSON Web Token för testning, eller kontrollera om en tokens HMAC-signatur matchar en hemlighet. Signering använder webbläsarens Web Crypto API.

Körs i din webbläsare Ingen registrering

Läge
Hemligheten stannar i den här webbläsarfliken och skickas aldrig någonstans. Klistra ändå inte in signeringshemligheter för produktion på någon webbplats: alla som har hemligheten kan skapa giltiga tokens för ditt system. Använd testhemligheter här.

alg ställs in från algoritmmenyn; typ är JWT som standard.

Anspråk som sub, iat och exp. Tider anges i sekunder sedan 1970 (UTC).

Ange en hemlig nyckel för att signera tokenen.

Så här använder du det

  1. Välj HS256, HS384 eller HS512.
  2. Redigera payloadens claims och klicka på ”Ställ in iat och exp” för att lägga till aktuell tid och en utgångstid.
  3. Ange en testhemlighet eller generera en slumpmässig 256-bitarshemlighet.
  4. Kopiera den signerade tokenen. För att kontrollera en token byter du till ”Verifiera signatur”, klistrar in den och anger hemligheten.

Så fungerar det

En JSON Web Token (RFC 7519) har tre Base64URL-kodade delar: en header, en payload med claims och en signatur. Med HMAC-algoritmerna HS256, HS384 och HS512 är signaturen en HMAC med SHA-256, SHA-384 eller SHA-512 över ”header.payload”, med en delad hemlighet som nyckel. Alla som har hemligheten kan skapa och verifiera token.

Verktyget serialiserar header och payload som kompakt JSON, kodar dem och signerar dem med crypto.subtle, Web Crypto API som är inbyggt i webbläsaren. Fältet alg i headern matchar alltid den valda algoritmen, typ har standardvärdet JWT, och eventuella andra headerfält, som kid, behålls. ”Ställ in iat och exp” skriver aktuell tid som iat (utfärdad) och lägger till vald livslängd som exp, båda i sekunder sedan 1 januari 1970 UTC. Resultatet matchar andra JWT-bibliotek; till exempel återges det klassiska jwt.io-exempeltokenet exakt.

Hemligheten kan vara vanlig text (dess UTF-8-byte är nyckeln) eller Base64/Base64URL-kodade byte, vilket många ramverk använder. Knappen för slumpmässig hemlighet skapar 32 slumpmässiga byte med crypto.getRandomValues. För HS256 bör du använda minst 32 slumpmässiga byte; korta, mänskligt valda hemligheter kan gissas offline från vilken token som helst.

Verifieringen avkodar tokenen, kontrollerar att den använder en HMAC-algoritm och beräknar signaturen på nytt med crypto.subtle.verify. Den visar också när exp eller nbf innebär att tokenen har gått ut eller ännu inte är giltig. RS256, ES256 och andra algoritmer med publik nyckel stöds inte, och verifieringen här kontrollerar inte issuer, audience eller andra claims som din applikation kan kräva.

Exempel

Testa ett API lokalt

Din utvecklingsserver förväntar sig HS256-token signerade med ”dev-secret-change-me”. Sätt sub till ett testanvändar-ID, klicka på ”Ställ in iat och exp” med 1 timme, ange hemligheten och skicka tokenen i en Authorization: Bearer-header.

Kontrollera vilken hemlighet som signerade en token

En staging-token avvisas. Klistra in den i ”Verifiera signatur” och testa staging-hemligheten: ”Signaturen är inte giltig” betyder att token signerades med en annan hemlighet eller att hemligheten har ett annat format (text eller Base64).

Återskapa exemplet från jwt.io

Med header {"alg":"HS256","typ":"JWT"}, payload {"sub":"1234567890","name":"John Doe","iat":1516239022} och hemligheten ”your-256-bit-secret” slutar token på SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, samma som på jwt.io.

Vanliga frågor

Skickas min hemlighet till er server?

Nej. Signering och verifiering körs med Web Crypto API i din webbläsare, och hemligheten lagras inte och skickas inte någonstans. Vi rekommenderar ändå att du bara använder testhemligheter, eftersom en riktig signeringshemlighet aldrig bör skrivas in på en webbplats.

Varför är signaturen ogiltig trots att hemligheten är rätt?

Kontrollera hemlighetens format. Vissa system använder texten i hemligheten, andra avkodar den från Base64 först, vilket ger olika nyckeldata. Kontrollera också att token inte har ändrats och att den använder samma algoritm.

Kan jag skapa RS256- eller ES256-token?

Inte med det här verktyget. Det stöder endast HMAC-algoritmerna med delad hemlighet HS256, HS384 och HS512.

Är payloaden krypterad?

Nej. En signerad JWT är endast kodad; vem som helst kan avkoda och läsa payloaden. Signaturen bevisar bara att den inte har ändrats. Lägg inte lösenord eller andra hemligheter i payloaden.

Integritet

Tokens skapas och verifieras endast i din webbläsare med Web Crypto API. Header, payload, token och hemlighet varken laddas upp, lagras eller ingår i analys.