Sådan bruger du det
- Vælg HS256, HS384 eller HS512.
- Rediger payload-claims, og klik på “Indstil iat og exp” for at tilføje aktuelt tidspunkt og en udløbstid.
- Indtast en testhemmelighed, eller generer en tilfældig 256-bit hemmelighed.
- Kopier det signerede token. For at tjekke et token, skift til “Verificer signatur”, indsæt det og indtast hemmeligheden.
Sådan fungerer det
En JSON Web Token (RFC 7519) har tre Base64URL-kodede dele: en header, en payload med claims og en signatur. Med HMAC-algoritmerne HS256, HS384 og HS512 er signaturen en HMAC med SHA-256, SHA-384 eller SHA-512 over “header.payload” med en delt hemmelighed som nøgle. Enhver med hemmeligheden kan oprette og verificere tokens.
Værktøjet serialiserer header og payload som kompakt JSON, koder dem og signerer dem med crypto.subtle, Web Crypto API'et, der er indbygget i din browser. Feltet alg i headeren matcher altid den valgte algoritme, typ er som standard JWT, og eventuelle andre headerfelter, f.eks. kid, bevares. “Sæt iat og exp” skriver det aktuelle tidspunkt som iat (udstedt) og tilføjer den valgte levetid som exp, begge i sekunder siden 1. januar 1970 UTC. Resultatet matcher andre JWT-biblioteker; f.eks. gengives det klassiske jwt.io-eksempeltoken nøjagtigt.
Hemmeligheden kan være almindelig tekst (dens UTF-8-bytes er nøglen) eller Base64/Base64URL-kodede bytes, som mange frameworks bruger. Knappen til tilfældig hemmelighed opretter 32 tilfældige bytes med crypto.getRandomValues. Til HS256 skal du bruge mindst 32 tilfældige bytes; korte, menneskevalgte hemmeligheder kan gættes offline ud fra et hvilket som helst token.
Verifikation afkoder tokenet, kontrollerer, at det bruger en HMAC-algoritme, og genberegner signaturen med crypto.subtle.verify. Den viser også, når exp eller nbf betyder, at tokenet er udløbet eller endnu ikke gyldigt. RS256, ES256 og andre public-key-algoritmer understøttes ikke, og verifikationen her kontrollerer ikke issuer, audience eller andre claims, som din applikation kan kræve.
Eksempler
Test af et API lokalt
Din udviklingsserver forventer HS256-tokens signeret med “dev-secret-change-me”. Sæt sub til et testbruger-id, klik på “Sæt iat og exp” med 1 time, indtast hemmeligheden, og send tokenet i en Authorization: Bearer-header.
Tjek hvilken hemmelighed der signerede et token
Et staging-token bliver afvist. Indsæt det i “Verificer signatur” og prøv staging-hemmeligheden: “Signaturen er ikke gyldig” fortæller dig, at tokenet blev signeret med en anden hemmelighed, eller at hemmeligheden er i et andet format (tekst vs. Base64).
Genskab jwt.io-eksemplet
Med header {"alg":"HS256","typ":"JWT"}, payload {"sub":"1234567890","name":"John Doe","iat":1516239022} og hemmeligheden “your-256-bit-secret” ender tokenet på SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, det samme som på jwt.io.
Ofte stillede spørgsmål
Bliver min hemmelighed sendt til jeres server?
Nej. Signering og verifikation kører med Web Crypto API i din browser, og hemmeligheden bliver ikke gemt eller sendt nogen steder hen. Vi anbefaler stadig kun testhemmeligheder, fordi en rigtig signeringshemmelighed aldrig bør indtastes på en hjemmeside.
Hvorfor er signaturen ugyldig, selvom hemmeligheden er korrekt?
Tjek hemmelighedens format. Nogle systemer bruger hemmelighedens tekst, andre afkoder den først fra Base64, hvilket giver forskellige nøglebytes. Tjek også, at tokenet ikke er blevet ændret, og at det bruger den samme algoritme.
Kan jeg oprette RS256- eller ES256-tokens?
Ikke med dette værktøj. Det understøtter kun HMAC-algoritmer med delt hemmelighed: HS256, HS384 og HS512.
Er payloadet krypteret?
Nej. En signeret JWT er kun kodet; alle kan afkode og læse payloadet. Signaturen beviser kun, at den ikke er blevet ændret. Læg ikke adgangskoder eller andre hemmeligheder i payloadet.
Privatliv
Tokens oprettes og verificeres kun i din browser med Web Crypto API. Header, payload, token og hemmelighed uploades ikke, gemmes ikke og indgår ikke i analyser.