Sådan bruger du værktøjet
- Indsæt hele tokenet: tre Base64URL-dele adskilt af punktummer.
- Læs den afkodede header og payload. Værdierne i exp, iat og nbf vises som datoer med en advarsel, hvis tokenet er udløbet eller endnu ikke er gyldigt.
- Vil du verificere signaturen, så åbn Verificér signatur, og indtast den fælles nøgle i feltet Hemmelig nøgle for HS256, HS384 eller HS512, eller indsæt den offentlige PEM-nøgle i feltet Offentlig nøgle (PEM, SPKI) for RS-, PS- eller ES-algoritmer.
- Kontrollér, at claims for udsteder, målgruppe og subjekt svarer til det, din applikation forventer.
Sådan er et JWT opbygget
Et JSON Web Token (RFC 7519) består af tre dele adskilt af punktummer: header.payload.signature. Header og payload er JSON-objekter kodet som Base64URL uden udfyldning, og derfor begynder tokens næsten altid med eyJ, den kodede form af et indledende {". Signaturen beregnes over de to første dele, præcis som de står i tokenet.
- Header: signeringsalgoritmen i
alg, som regel"typ": "JWT"og ofte enkid, der angiver nøglen. - Payload: claims, for eksempel hvem brugeren er, hvem der har udstedt tokenet, og hvornår det udløber.
- Signatur: en HMAC-, RSA- eller ECDSA-signatur, der beviser, at header og payload ikke er blevet ændret.
Et token med fem dele er et krypteret JWE. Indholdet kan ikke læses uden dekrypteringsnøglen.
Registrerede claims
| Claim | Navn | Betydning |
|---|---|---|
iss | Issuer (udsteder) | Hvem der har oprettet og signeret tokenet |
sub | Subject (subjekt) | Hvem tokenet handler om, som regel et bruger-id |
aud | Audience (målgruppe) | Den tjeneste, tokenet er beregnet til |
exp | Expiration time (udløbstid) | Efter dette tidspunkt skal tokenet afvises |
nbf | Not before (ikke før) | Før dette tidspunkt skal tokenet afvises |
iat | Issued at (udstedt) | Hvornår tokenet blev oprettet |
jti | JWT ID | Entydigt id, der bruges til at opdage genafspilning (replay) |
Tidspunkter er NumericDate-værdier: sekunder siden 1. januar 1970 UTC, ikke millisekunder. Dekoderen viser dem som læsbare datoer og sammenligner dem med uret på din enhed.
Afkodning er ikke verificering
Alle kan afkode et JWT, fordi payloaden kun er kodet, ikke krypteret. Læg derfor aldrig adgangskoder eller andre hemmeligheder i den. Tillid opnås kun ved at kontrollere signaturen med den rigtige nøgle, og en server, der modtager tokens, bør også:
- kun tillade den algoritme, den forventer, og afvise
"alg": "none", som markerer et usigneret token; - aldrig lade tokenets header vælge mellem HMAC og RSA, da en angriber ellers kan signere et forfalsket token med din offentlige nøgle brugt som HMAC-hemmelighed;
- kontrollere
exp,nbf,issogaudved hver anmodning.
Den valgfrie verificering på denne side bruger Web Crypto API, som er indbygget i din browser. Afkodning og verificering sker på din enhed, og intet bliver uploadet. Som en generel regel bør du aldrig indsætte signeringsnøgler fra produktion eller aktive tokens på websites, du ikke har tillid til.
Ofte stillede spørgsmål
Er det sikkert at indsætte et JWT i denne dekoder?
Tokenet afkodes og verificeres af JavaScript i din browser og sendes aldrig til en server. Husk, at et token, der ikke er udløbet, fungerer som en adgangskode for den, der har det, så brug hellere test- eller udløbne tokens, når du deler skærmbilleder eller logfiler.
Kan jeg afkode et JWT uden den hemmelige nøgle?
Ja. Header og payload er almindelig Base64URL-kodet JSON, så de kan læses uden nogen nøgle. Den hemmelige eller offentlige nøgle skal kun bruges til at verificere signaturen.
Hvorfor siger dekoderen, at mit token er udløbet?
exp-claim ligger før det aktuelle tidspunkt på din enhed. Hvis tokenet stadig burde være gyldigt, så kontrollér systemuret og den levetid for tokens, som udstederen har konfigureret.Hvilke signaturalgoritmer kan verificeres?
HS256, HS384 og HS512 med en fælles hemmelig nøgle samt RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 og ES512 med en offentlig nøgle i PEM-format.
Hvad betyder "alg": "none"?
Det markerer et usikret JWT med en tom signatur, som defineret i RFC 7518. Alle kan oprette eller ændre sådan et token, så en server, der forventer signerede tokens, skal altid afvise det.