> afkod | inspicér | verificér <
// Afkod og inspicér JSON Web Tokens (JWT) øjeblikkeligt
Lokal Behandling
100% klientside JWT-afkodning. Dine tokens forlader aldrig din browser.
Auto-Afkodning
Afkod JWT tokens automatisk ved indsætning eller indtastning.
Fuld Token Inspektion
Vis header, payload og signatur. Tjek algoritme og udløb.
// OM JWT AFKODNING
JWT Struktur:
En JSON Web Token (JWT) består af tre Base64URL-kodede dele adskilt af punkter: header.payload.signatur. Headeren angiver algoritmen og tokentypen. Payloaden indeholder krav (data). Signaturen verificerer tokenets integritet.
Eksempel:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.signature → {"alg":"HS256"} + {"sub":"1234"}
Almindelige Anvendelser:
- >Fejlsøgning af autentificeringstokens i webapplikationer
- >Inspektion af OAuth 2.0 og OpenID Connect tokens
- >Verificering af token udløb og krav
- >Forståelse af JWT struktur ifølge RFC 7519
- >Kontrol af Base64URL kodningsintegritet
>> ofte stillede spørgsmål
S: Hvad er en JSON Web Token (JWT)?
S: JWT (JSON Web Token) er en åben standard (RFC 7519) til sikker transmission af information mellem parter som et JSON-objekt. Den er kompakt, URL-sikker og bruges ofte til autentificering.
S: Hvad er de tre dele af en JWT?
S: En JWT består af tre dele adskilt af punkter: Header (algoritme og type), Payload (krav og data) og Signatur (verifikationshash). Hver del er Base64URL-kodet.
S: Kan en JWT afkodes uden den hemmelige nøgle?
S: Ja, headeren og payloaden i en JWT kan afkodes af alle, da de blot er Base64URL-kodede (ikke krypterede). Den hemmelige nøgle er kun nødvendig for at verificere signaturen.
S: Hvad er forskellen mellem JWT og sessionsbaseret autentificering?
S: Sessioner gemmer tilstand på serveren med en sessions-ID cookie. JWT'er er tilstandsløse — tokenet selv indeholder al nødvendig information.
S: Hvordan fungerer JWT udløb?
S: exp-kravet i JWT payloaden angiver udløbstidspunktet som et Unix-tidsstempel. Efter dette tidspunkt bør tokenet anses for ugyldigt.
// Almindelige JWT-signaturalgoritmer
Værdien alg i headeren angiver, hvordan signaturen laves. HS* bruger en delt hemmelighed; RS*, PS*, ES* og EdDSA bruger nøglepar.
| alg | Algoritme |
|---|---|
| HS256 | HMAC + SHA-256 |
| HS512 | HMAC + SHA-512 |
| RS256 | RSA PKCS#1 v1.5 + SHA-256 |
| PS256 | RSASSA-PSS + SHA-256 |
| ES256 | ECDSA P-256 + SHA-256 |
| EdDSA | Ed25519 |
// Verificér JWT i kode
Afkodning alene verificerer intet. Angiv altid udtrykkeligt de tilladte algoritmer ved verificering.
Node.js (jsonwebtoken) jwt.verify(token, secret, { algorithms: ['HS256'] })
Python (PyJWT) jwt.decode(token, key, algorithms=["HS256"])
PHP (firebase/php-jwt) JWT::decode($token, new Key($key, 'HS256'))
Go (golang-jwt) jwt.Parse(token, keyFunc, jwt.WithValidMethods([]string{"HS256"}))
Java (jjwt) Jwts.parser().verifyWith(key).build().parseSignedClaims(token)
>> Flere spørgsmål
S: Hvad betyder standardclaims iss, sub, aud, exp, nbf, iat og jti?
S: iss er udstederen, sub emnet (ofte bruger-id), aud den tiltænkte modtager, exp udløbstidspunktet, nbf starten på gyldigheden, iat udstedelsestidspunktet og jti et unikt token-id. Tidspunkter er Unix-sekunder.
S: Er en JWT krypteret?
S: En almindelig signeret JWT (JWS) er ikke krypteret, kun Base64URL-kodet: alle kan læse indholdet. Signaturen beskytter kun mod manipulation. Læg ikke følsomme data i den, eller brug en krypteret JWE.
S: Hvordan verificerer jeg signaturen på en JWT?
S: Du skal bruge nøglen: den delte hemmelighed til HS256 eller den offentlige nøgle til RS256/ES256. Serveren genberegner signaturen for Header.Payload og sammenligner. Denne afkoder kører i browseren og verificerer ikke signaturen for dig – brug et gennemprøvet bibliotek.
S: Hvilke almindelige sikkerhedsfejl findes der med JWT?
S: Hyppige: at stole på alg fra selve tokenet (især none), svage HS256-hemmeligheder, manglende kontrol af exp, iss og aud, følsomme data i payload og langtidsholdbare tokens i localStorage.