Controllare un JWKS prima di pubblicarlo
Prima di mettere online /.well-known/jwks.json, verifica che nessuna chiave contenga d o k e che ognuna abbia un kid univoco.
Incolla una JWK o un JWKS per ottenere una tabella per chiave (kid, kty, alg, use, key_ops, impronta SHA-256 RFC 7638) e avvisi: kty o kid mancante, kid duplicato, materiale di chiave privata pubblicato per errore.
Avvisi
| # | kid | kty | alg | use | key_ops | Natura | Impronta SHA-256 (RFC 7638) |
|---|
L’ispettore JWK / JWKS rende leggibile un set di chiavi JSON Web Key, come quello pubblicato al jwks_uri di un provider OpenID Connect. È pensato per sviluppatori e team di sicurezza che pubblicano o usano un JWKS e vogliono vedere a colpo d’occhio quali chiavi contiene, come sono identificate e se per errore vi compare qualche dato privato.
Una JWK (RFC 7517) descrive una chiave in JSON: kty indica la famiglia (RSA, EC, oct), kid l’identificativo, alg l’algoritmo previsto, use l’uso (sig per la firma, enc per la cifratura) e key_ops le operazioni consentite. Un JWKS è semplicemente un oggetto {"keys":[…]} che ne raggruppa diverse. Lo strumento accetta entrambe le forme, mostra una riga per chiave e riassume il numero di chiavi, i tipi presenti e i kid distinti. Calcola anche l’impronta RFC 7638 di ogni chiave: l’hash SHA-256, codificato in Base64URL, di un JSON canonico che contiene solo i membri obbligatori in ordine alfabetico, cioè e, kty e n per RSA, crv, kty, x e y per EC, k e kty per una chiave simmetrica.
Gli avvisi riguardano errori di pubblicazione reali: kty assente (la chiave è inutilizzabile), kid assente quando il set contiene più chiavi (il verificatore non sa quale usare), kid duplicato e soprattutto presenza di materiale privato. Per RSA, i membri d, p, q, dp, dq e qi costituiscono la chiave privata; per EC è d; per una chiave simmetrica oct, il membro k è il segreto stesso. Un JWKS pubblico deve contenere solo chiavi pubbliche, altrimenti chiunque può firmare token al posto tuo. Il risultato può essere esportato in JSON.
Incolla una singola chiave {"kty":…} o un set completo {"keys":[…]}, ad esempio copiato dal jwks_uri del tuo provider.
Per ogni chiave controlla kid, kty, alg, use, key_ops e l’impronta SHA-256 RFC 7638, oltre al riepilogo con numero di chiavi, tipi e kid distinti.
Correggi kty o kid mancanti e kid duplicati, rimuovi ogni dato privato ed esporta il risultato in JSON se necessario.
Prima di mettere online /.well-known/jwks.json, verifica che nessuna chiave contenga d o k e che ognuna abbia un kid univoco.
Incolla il JWKS del tuo provider (Auth0, Keycloak, Entra ID, Google) durante una rotazione per vedere la chiave vecchia e quella nuova affiancate, con kid e impronta.
Confronta il kid letto nell’header di un JWT con quelli del JWKS per individuare la chiave attesa, poi verifica la firma con il verificatore JWT.
Una JWK è una singola chiave rappresentata in JSON, con campi come kty, n, e oppure x e y. Un JWKS (JSON Web Key Set) è un oggetto {"keys":[…]} che contiene un elenco di JWK, di solito pubblicato da un server di autorizzazione perché i client possano verificarne i token.
È un identificativo calcolato secondo la RFC 7638: lo SHA-256 di un JSON canonico che contiene solo i membri obbligatori della chiave pubblica, codificato in Base64URL. Due rappresentazioni della stessa chiave danno sempre la stessa impronta, e l’impronta di una chiave privata è quella della sua chiave pubblica. Molti provider la usano come kid.
La RFC 7517 lo rende facoltativo, ma quando un JWKS contiene più chiavi diventa indispensabile: è il kid nell’header del JWT a permettere di scegliere la chiave giusta. Senza, il verificatore deve provare ogni chiave, cosa che molte librerie rifiutano.
Una JWK RSA è privata se contiene d (e spesso p, q, dp, dq, qi); una JWK EC è privata se contiene d; una chiave oct contiene sempre il segreto in k. Lo strumento segnala questi membri. Una chiave pubblica RSA contiene solo kty, n ed e, più eventuali metadati.
RSA è una chiave RSA usata ad esempio con RS256 o PS256; EC è una chiave a curva ellittica (P-256, P-384, P-521) usata con ES256, ES384 o ES512; oct è una chiave simmetrica, cioè una sequenza segreta di byte usata con HS256 o per la cifratura AES.
use indica l’uso generale della chiave: sig per la firma, enc per la cifratura. key_ops elenca con precisione le operazioni consentite, come verify, sign, encrypt o wrapKey. La RFC 7517 raccomanda di non usarli insieme o, se lo si fa, di mantenerli coerenti.
Strumenti correlati
Strumenti simili o complementari a questo.
Verifica la firma di un JWT con un segreto HMAC o una chiave pubblica JWK, JWKS o PEM, poi controlla exp, nbf, iss e aud.
Decodifica un JWT per leggere header, payload, claim e date di scadenza.
Genera un code_verifier PKCE, il suo code_challenge S256 e uno state per la tua richiesta di autorizzazione OAuth.
Comprendi come si collegano OAuth 2.0, PKCE, JWT, JWK e JWKS: autorizzazione, token, chiavi pubbliche e verifica.
Scopri quando usare crittografia, hashing, HMAC o PBKDF2 per riservatezza, integrità, autenticazione e password.
Scopri cosa contiene un JWT, cosa prova davvero la sua firma e perché decodificare un token non equivale a verificarlo.
Impara a costruire una CSP progressiva, comprenderne le direttive ed evitare policy troppo permissive o che rompono il sito.