Spring Security 6 en JWT-authenticatie · Les

Ondertekeningssleutels roteren en sleutelbeheer

Leer waarom en hoe u ondertekeningssleutels voor JWT's veilig roteert met key-ID's (kid), JWK-sets en overlappende geldigheid om downtime te voorkomen.

Les 4 van 413 stappen

Ondertekeningssleutels roteren en sleutelbeheer is een gratis Spring Security 6 en JWT-authenticatie-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Spring Security 6 en JWT-authenticatie. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Spring Security 6 en JWT-authenticatie bevat in totaal 4 lessen.

Waarom sleutels roteren?

Een ondertekeningssleutel is het geheim dat bewijst dat een JWT echt is. Als de sleutel uitlekt, kan een aanvaller tokens vervalsen. Sleutelrotatie vervangt sleutels regelmatig, zodat een gecompromitteerde sleutel maar beperkte tijd bruikbaar is.

De uitdaging bij rotatie

Je kunt de sleutel niet zomaar vervangen: tokens die met de oude sleutel zijn ondertekend, blijven geldig totdat ze verlopen. De server moet tijdens een overgangsperiode de oude en nieuwe sleutel tegelijkertijd accepteren.

De kid-header

De JWT-header kan een kid (sleutel-ID) bevatten. Deze geeft aan welke sleutel dit token heeft ondertekend, zodat de server de juiste sleutel uit meerdere sleutels kan opzoeken.

{
  'alg': 'RS256',
  'typ': 'JWT',
  'kid': 'key-2024-06'
}

Ondertekenen met een kid

Wanneer je een token maakt, zet je de ID van de huidige sleutel in de header, zodat verificateurs later de bijbehorende publieke sleutel kunnen vinden.

const token = sign(payload, privateKey, {
  algorithm: 'RS256',
  keyid: 'key-2024-06'
});

Een sleuteloverzicht bijhouden

De server houdt een overzicht bij van kid naar sleutel. Tijdens rotatie bevat dit zowel de sleutel die wordt uitgefaseerd als de nieuwe sleutel.

const keys = {
  'key-2024-06': newPublicKey,
  'key-2024-03': oldPublicKey
};

Verifiëren met kid

Lees bij het verifiëren de kid uit de header, selecteer de sleutel en valideer vervolgens de handtekening ermee.

const header = decodeHeader(token);
const key = keys[header.kid];
const claims = verify(token, key, { algorithms: ['RS256'] });

JWK en JWKS

Een JWK (JSON Web Key) is een publieke sleutel in JSON-vorm. Een JWKS (JWK Set) is een lijst met zulke sleutels, die doorgaans op een bekende URL wordt aangeboden zodat resourceservers automatisch de actuele publieke sleutels kunnen ophalen.

{
  'keys': [
    { 'kid': 'key-2024-06', 'kty': 'RSA', 'n': '...', 'e': 'AQAB' }
  ]
}

Spring Security JwtDecoder vanuit JWKS

Een Spring-resourceserver kan rechtstreeks vanuit een JWKS-eindpunt een decoder opbouwen, zodat voor rotatie geen nieuwe implementatie van clients nodig is.

JwtDecoder decoder = NimbusJwtDecoder
    .withJwkSetUri('https://auth.example.com/.well-known/jwks.json')
    .build();

De tijdlijn van rotatie

Een veilige rotatie verloopt in fasen:

  • Publiceer de nieuwe sleutel in de JWKS, maar blijf ondertekenen met de oude sleutel
  • Schakel het ondertekenen over naar de nieuwe sleutel
  • Wacht totdat alle oude tokens zijn verlopen
  • Verwijder de oude sleutel

Asymmetrisch versus symmetrisch

Rotatie is eenvoudiger met asymmetrische sleutels (RS256/ES256): je kunt publieke sleutels vrijelijk delen via JWKS en de privésleutel geheim houden. Voor symmetrische sleutels (HS256) moet je het gedeelde geheim verspreiden naar elke verificateur.

Privésleutels veilig opslaan

Leg ondertekeningssleutels nooit vast in versiebeheer. Sla ze op in een geheimenbeheerder (Vault, AWS Secrets Manager, KMS) en laad ze tijdens runtime. Beperk wie en wat ze kan lezen.

Korte controle

Test je begrip van sleutelrotatie.

Samenvatting

Je hebt geleerd hoe je JWT-ondertekeningssleutels veilig roteert:

  • Rotatie beperkt de schade van een gelekte sleutel
  • Gebruik kid-headers zodat meerdere sleutels naast elkaar kunnen bestaan
  • Publiceer publieke sleutels via een JWKS-eindpunt
  • Roteer in fasen en sla privésleutels op in een geheimenbeheerder

Asymmetrische sleutels in combinatie met JWKS maken rotatie naadloos en zonder downtime.

Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Ondertekeningssleutels roteren en sleutelbeheer” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Spring Security 6 en JWT-authenticatie, waaronder “Ondertekeningssleutels roteren en sleutelbeheer”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Spring Security 6 en JWT-authenticatie bevat in totaal 4 lessen.

Wat leer ik in “Ondertekeningssleutels roteren en sleutelbeheer”?

Leer waarom en hoe u ondertekeningssleutels voor JWT's veilig roteert met key-ID's (kid), JWK-sets en overlappende geldigheid om downtime te voorkomen. Je oefent met Spring Security 6 en JWT-authenticatie door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Spring Security 6 en JWT-authenticatie te beginnen?

Ervaring vooraf is niet nodig. Spring Security 6 en JWT-authenticatie op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Ondertekeningssleutels roteren en sleutelbeheer”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Spring Security 6 en JWT-authenticatie?

Ja. Elke les over Spring Security 6 en JWT-authenticatie bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Refresh tokens implementeren
  2. Strategieën voor het intrekken van JWT-tokens
  3. Veilige opslag van tokens
  4. Ondertekeningssleutels roteren en sleutelbeheer
← Terug naar Spring Security 6 en JWT-authenticatie