Kunskapsbank

JWT utan magi – claims, signaturer, livslängd och vanliga designfel

JWT är ett format för signerade claims, inte en sessionsdatabas eller ett universellt svar på autentisering; säkerheten beror på hur tokenet utfärdas och valideras.

Ämnesspecifik teknisk illustration för artikeln JWT utan magi – claims, signaturer, livslängd och vanliga designfel

Jag ser JWT utan magi som en praktisk säkerhetsfråga där tekniken behöver kunna verifieras, inte bara beskrivas. JWT är ett format för signerade claims, inte en sessionsdatabas eller ett universellt svar på autentisering; säkerheten beror på hur tokenet utfärdas och valideras.

JWT utan magi i praktiken

Första byggstenen: Signaturen bevisar integritet men krypterar normalt inte innehållet. Det behöver kopplas till ett tydligt syfte och kunna observeras i den miljö där kontrollen faktiskt ska användas.

En annan viktig del: Issuer och audience måste valideras för rätt förtroendedomän. Det behöver kopplas till ett tydligt syfte och kunna observeras i den miljö där kontrollen faktiskt ska användas.

Det tekniska ankaret: Exp och nbf begränsar när tokenet är giltigt. Det behöver kopplas till ett tydligt syfte och kunna observeras i den miljö där kontrollen faktiskt ska användas.

Det som ofta avgör kvaliteten: Algoritm och nyckelvalidering ska styras av serverpolicy, inte okritiskt av tokenets header. Det behöver kopplas till ett tydligt syfte och kunna observeras i den miljö där kontrollen faktiskt ska användas.

Ett arbetsflöde jag skulle använda

  1. Definiera minsta nödvändiga claims.
  2. Håll livslängden kort för högprivilegierade tokens.
  3. Validera signatur, issuer, audience och tid på varje konsumerande tjänst.
  4. Planera nyckelrotation med överlappande public keys.
  5. Logga token-id eller korrelationsdata utan att skriva hela tokenet i klartext.

För JWT utan magi håller jag därför införandet i små steg. Då går det att skilja ett säkerhetsproblem från ett rent driftfel och att rulla tillbaka just den ändring som gav ett oväntat resultat.

Ett konkret scenario

Jag testar gärna samma token mot två API:er. Om båda accepterar den trots olika audience har arkitekturen sannolikt gjort auktoriseringsgränsen för bred.

Vanliga sätt att göra kontrollen svagare

  • Att lägga hemlig eller personkänslig data i payload eftersom den ser kodad ut.
  • Att acceptera fel audience mellan mikrotjänster.
  • Att göra tokens så långlivade att revocation blir opraktisk.

Vad som måste gå att bevisa

För JWT utan magi vill jag avsluta med mätbara efterkontroller i stället för att nöja mig med att en statusruta visar ”enabled”. De viktigaste kontrollerna här är:

  • Utgånget token nekas.
  • Token från fel issuer nekas.
  • Nyckelrotation fungerar utan att gamla giltiga sessioner bryts direkt.

Ett negativt test hör också till JWT utan magi: den väg, identitet eller operation som inte ska vara tillåten ska misslyckas på ett förutsägbart sätt. Då kan nästa tekniker upprepa kontrollen och förstå både avsikten och gränsen.

Slutsats

JWT utan magi – claims, signaturer, livslängd och vanliga designfel handlar därför inte om att samla fler säkerhetsinställningar. Det handlar om att minska en konkret risk med en kontroll som har tydligt scope, tydlig ägare och ett verifierbart resultat. När före-läge, förändring och eftertest dokumenteras blir säkerhetsarbetet både säkrare och lättare att förvalta.