Rotazione delle chiavi di firma e gestione delle chiavi
Impari perché e come ruotare in sicurezza le chiavi di firma dei JWT, usando gli identificatori delle chiavi (kid), i set JWK e periodi di validità sovrapposti per evitare interruzioni.
Rotazione delle chiavi di firma e gestione delle chiavi è una lezione Spring Security 6 & JWT Authentication gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Spring Security 6 & JWT Authentication, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Spring Security 6 & JWT Authentication include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Why Rotate Keys?
A signing key is the secret that proves a JWT is genuine. If it leaks, an attacker can forge tokens. Key rotation replaces keys periodically so a compromised key has a limited lifetime.
The Rotation Challenge
You cannot simply swap the key: tokens signed with the old key are still valid until they expire. The server must accept the old and new keys at the same time during a transition window.
The kid Header
The JWT header can carry a kid (key ID). It tells the verifier which key signed this token, so the server can look up the right key among several.
{
'alg': 'RS256',
'typ': 'JWT',
'kid': 'key-2024-06'
}Signing With a kid
When you mint a token, stamp the current key's id into the header so verifiers can find the matching public key later.
const token = sign(payload, privateKey, {
algorithm: 'RS256',
keyid: 'key-2024-06'
});Keeping a Key Map
The server holds a map of kid to key. During rotation it contains both the retiring key and the new key.
const keys = {
'key-2024-06': newPublicKey,
'key-2024-03': oldPublicKey
};Verifying by kid
On verification, read the kid from the header, select the key, then validate the signature against it.
const header = decodeHeader(token);
const key = keys[header.kid];
const claims = verify(token, key, { algorithms: ['RS256'] });JWK and JWKS
A JWK (JSON Web Key) is a public key in JSON form. A JWKS (JWK Set) is a list of them, typically served at a well-known URL so resource servers can fetch current public keys automatically.
{
'keys': [
{ 'kid': 'key-2024-06', 'kty': 'RSA', 'n': '...', 'e': 'AQAB' }
]
}Spring Security JwtDecoder from JWKS
A Spring resource server can build a decoder straight from a JWKS endpoint, so rotation requires no redeploy of clients.
JwtDecoder decoder = NimbusJwtDecoder
.withJwkSetUri('https://auth.example.com/.well-known/jwks.json')
.build();The Rotation Timeline
A safe rotation follows phases:
- Publish the new key in the JWKS, but keep signing with the old key
- Switch signing to the new key
- Wait for all old tokens to expire
- Remove the old key
Asymmetric vs Symmetric
Rotation is easier with asymmetric keys (RS256/ES256): you can share public keys freely via JWKS while keeping the private key secret. Symmetric (HS256) requires distributing the shared secret to every verifier.
Storing Private Keys Safely
Never commit signing keys to source control. Store them in a secrets manager (Vault, AWS Secrets Manager, KMS) and load them at runtime. Limit who and what can read them.
Quick Check
Test your understanding of key rotation.
Recap
You learned to rotate JWT signing keys safely:
- Rotation limits the damage of a leaked key
- Use
kidheaders so multiple keys can coexist - Publish public keys via a JWKS endpoint
- Rotate in phases and store private keys in a secrets manager
Asymmetric keys plus JWKS make rotation seamless and downtime-free.
Domande Frequenti
La lezione «Rotazione delle chiavi di firma e gestione delle chiavi» è gratuita?
Sì — il testo completo di «Rotazione delle chiavi di firma e gestione delle chiavi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Spring Security 6 & JWT Authentication, passa a CoddyKit PRO. Il corso Spring Security 6 & JWT Authentication include 4 lezioni in totale.
Cosa imparerò in «Rotazione delle chiavi di firma e gestione delle chiavi»?
Impari perché e come ruotare in sicurezza le chiavi di firma dei JWT, usando gli identificatori delle chiavi (kid), i set JWK e periodi di validità sovrapposti per evitare interruzioni. Eserciti Spring Security 6 & JWT Authentication con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Spring Security 6 & JWT Authentication?
Non è richiesta alcuna esperienza precedente. Spring Security 6 & JWT Authentication su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Rotazione delle chiavi di firma e gestione delle chiavi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Spring Security 6 & JWT Authentication?
Sì. Ogni lezione Spring Security 6 & JWT Authentication include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Implementazione dei refresh token
- Strategie di revoca dei token JWT
- Pratiche per l'archiviazione sicura dei token
- Rotazione delle chiavi di firma e gestione delle chiavi