Spring Security 6 og JWT-autentisering · leksjon

Rotering av signeringsnøkler og nøkkelhåndtering

Lær hvorfor og hvordan JWT-signeringsnøkler roteres på en trygg måte ved hjelp av nøkkel-ID-er (kid), JWK-sett og overlappende gyldighet for å unngå nedetid.

Leksjon 4 av 413 trinn

Rotering av signeringsnøkler og nøkkelhåndtering er en gratis leksjon i Spring Security 6 og JWT-autentisering på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Spring Security 6 og JWT-autentisering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Spring Security 6 og JWT-autentisering inneholder totalt 4 leksjoner.

Hvorfor rotere nøkler?

En signeringsnøkkel er hemmeligheten som beviser at en JWT er ekte. Hvis den lekker, kan en angriper forfalske tokens. Nøkkelrotasjon erstatter nøkler med jevne mellomrom, slik at en kompromittert nøkkel bare er gyldig i en begrenset periode.

Utfordringen ved rotasjon

De kan ikke bare bytte nøkkel: Tokens som er signert med den gamle nøkkelen, er fortsatt gyldige til de utløper. Serveren må godta den gamle og den nye nøkkelen samtidig i en overgangsperiode.

kid-headeren

JWT-headeren kan inneholde en kid (nøkkel-ID). Den forteller verifikatoren hvilken nøkkel som signerte dette tokenet, slik at serveren kan finne riktig nøkkel blant flere.

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

Signere med kid

Når De oppretter et token, legger De ID-en til den gjeldende nøkkelen i headeren, slik at verifikatorer senere kan finne den tilsvarende offentlige nøkkelen.

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

Vedlikeholde et nøkkelkart

Serveren har et kart fra kid til nøkkel. Under rotasjon inneholder det både nøkkelen som fases ut, og den nye nøkkelen.

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

Verifisere med kid

Ved verifisering leser De kid fra headeren, velger nøkkelen og validerer deretter signaturen mot den.

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

JWK og JWKS

En JWK (JSON Web Key) er en offentlig nøkkel i JSON-format. En JWKS (JWK Set) er en liste over slike nøkler, vanligvis tilgjengelig på en kjent URL slik at ressursservere automatisk kan hente gjeldende offentlige nøkler.

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

Spring Security JwtDecoder fra JWKS

En Spring-ressursserver kan bygge en dekoder direkte fra et JWKS-endepunkt, slik at rotasjon ikke krever ny utrulling av klientene.

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

Tidslinje for rotasjon

En sikker rotasjon følger disse fasene:

  • Publiser den nye nøkkelen i JWKS, men fortsett å signere med den gamle nøkkelen
  • Bytt signering til den nye nøkkelen
  • Vent til alle gamle tokens har utløpt
  • Fjern den gamle nøkkelen

Asymmetrisk kontra symmetrisk

Rotasjon er enklere med asymmetriske nøkler (RS256/ES256): De kan dele offentlige nøkler fritt via JWKS, samtidig som den private nøkkelen holdes hemmelig. Symmetrisk (HS256) krever at den delte hemmeligheten distribueres til hver verifikator.

Lagre private nøkler sikkert

Legg aldri signeringsnøkler i kildekontrollen. Lagre dem i en secrets manager (Vault, AWS Secrets Manager, KMS) og last dem inn ved kjøring. Begrens hvem og hva som kan lese dem.

Kort kontroll

Test forståelsen Deres av nøkkelrotasjon.

Oppsummering

De har lært å rotere JWT-signeringsnøkler på en sikker måte:

  • Rotasjon begrenser skadeomfanget ved en lekket nøkkel
  • Bruk kid-headere slik at flere nøkler kan eksistere samtidig
  • Publiser offentlige nøkler via et JWKS-endepunkt
  • Roter i faser og lagre private nøkler i en secrets manager

Asymmetriske nøkler sammen med JWKS gjør rotasjonen sømløs og fri for nedetid.

Gratis å komme i gang

Lær deg Java med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Rotering av signeringsnøkler og nøkkelhåndtering» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Spring Security 6 og JWT-autentisering, inkludert «Rotering av signeringsnøkler og nøkkelhåndtering», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Spring Security 6 og JWT-autentisering inneholder totalt 4 leksjoner.

Hva lærer jeg i «Rotering av signeringsnøkler og nøkkelhåndtering»?

Lær hvorfor og hvordan JWT-signeringsnøkler roteres på en trygg måte ved hjelp av nøkkel-ID-er (kid), JWK-sett og overlappende gyldighet for å unngå nedetid. Du øver på Spring Security 6 og JWT-autentisering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Spring Security 6 og JWT-autentisering?

Ingen tidligere erfaring er nødvendig. Spring Security 6 og JWT-autentisering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Rotering av signeringsnøkler og nøkkelhåndtering»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Spring Security 6 og JWT-autentisering-leksjonen?

Ja. Alle Spring Security 6 og JWT-autentisering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Implementering av refresh-tokens
  2. Strategier for tilbakekalling av JWT-tokens
  3. Praksis for sikker tokenlagring
  4. Rotering av signeringsnøkler og nøkkelhåndtering
← Tilbake til Spring Security 6 og JWT-autentisering