Vai al contenuto principale
Sicurezza e privacy

Ispettore JWK / JWKS

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.

  • Appunti

Integra questo widget

Personalizza il risultato, controlla l’anteprima e copia il codice.

Anteprima

Tipo di codice di integrazione

Codice da copiare

Responsive e ridimensionato automaticamente da Bethemesh.

Questo strumento ti è stato utile?

Come funziona questo strumento?

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.

Come usare questo strumento

  1. Incolla la JWK o il JWKS

    Incolla una singola chiave {"kty":…} o un set completo {"keys":[…]}, ad esempio copiato dal jwks_uri del tuo provider.

  2. Leggi la tabella delle chiavi

    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.

  3. Gestisci gli avvisi

    Correggi kty o kid mancanti e kid duplicati, rimuovi ogni dato privato ed esporta il risultato in JSON se necessario.

Casi d’uso

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.

Seguire una rotazione delle chiavi

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.

Trovare la chiave che ha firmato un token

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.

Consigli e buone pratiche

  • Un avviso di chiave privata su un JWKS già pubblicato impone di revocare e sostituire la chiave: toglierla dal file non basta, potrebbe essere già stata copiata.
  • Evita un kid basato su un contatore o su una data prevedibile se puoi usare l’impronta RFC 7638: è stabile e identica qualunque sia la formattazione del JSON.
  • Una chiave oct (simmetrica) non deve mai stare in un JWKS pubblico: i segreti HMAC si condividono su un altro canale, tramite un gestore di segreti.

Domande frequenti

Che differenza c’è tra una JWK e un JWKS?

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.

Che cos’è l’impronta (thumbprint) di una JWK?

È 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.

Il kid è obbligatorio in un JWKS?

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.

Come capire se una JWK contiene una chiave privata?

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.

Cosa significano kty RSA, EC e oct?

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.

Che differenza c’è tra use e key_ops?

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.

Funziona bene con

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.

Sicurezza e privacyUsa questo strumento

Decodifica un JWT per leggere header, payload, claim e date di scadenza.

Sicurezza e privacyIn evidenzaUsa questo strumento

Genera un code_verifier PKCE, il suo code_challenge S256 e uno state per la tua richiesta di autorizzazione OAuth.

Sicurezza e privacyNuovoUsa questo strumento