Verificatore JWT
Verificate se un Web Token JSON è autentico e ancora valido. Incollate il token insieme al segreto HMAC, a una chiave pubblica PEM, a un certificato, a una JWK o a un JWKS completo: il verificatore controlla la firma con la libreria jose, confronta exp e nbf con l'ora corrente e con un'eventuale tolleranza dell'orologio, quindi mostra un esito chiaro accanto all'intestazione e alle claim decodificate. I token con alg none vengono rifiutati.
Domande frequenti
Cosa controlla il verificatore?
Controlla la firma con la chiave fornita, quindi confronta le claim exp e nbf con l'ora corrente. L'esito è valido solo se la firma corrisponde e nessuno dei due controlli temporali fallisce. Claim come iss, aud o sub vengono mostrate nel payload, ma non vengono confrontate con valori attesi.
Quali chiavi posso incollare?
Per HS256, HS384 e HS512, incollate il segreto condiviso come testo o come JWK oct. Per i token RSA, EC ed EdDSA, incollate una chiave pubblica PEM (SPKI o PKCS #1), un certificato X.509, una JWK pubblica o privata, una JWKS con un massimo di 50 chiavi oppure una chiave privata PEM, della quale viene usata solo la parte pubblica.
Come viene scelta la chiave corretta da una JWKS?
Se l'intestazione del token contiene un kid, viene usata la chiave con lo stesso kid nell'insieme; se non ce n'è una corrispondente, un errore indica il kid. Se il kid manca, l'insieme deve contenere esattamente una chiave. Questo rispecchia il modo in cui la maggior parte dei server seleziona le chiavi da un documento jwks_uri.
A cosa serve l'opzione dell'algoritmo?
Con Usa l'alg del token, l'algoritmo viene ricavato dall'intestazione del token, ma la chiave deve comunque essere compatibile: una chiave pubblica RSA non può mai essere usata come segreto HMAC. Selezionate un algoritmo specifico per richiedere anche che il token lo utilizzi: è così che un server dovrebbe fissare l'algoritmo previsto. Un token con un altro alg viene quindi rifiutato e vengono mostrati entrambi i nomi.
Perché un token con alg none viene rifiutato?
Un token con alg none non contiene una firma, quindi non c'è nulla da verificare e chiunque avrebbe potuto scriverlo. Accettare token di questo tipo è una vulnerabilità ben nota nelle librerie JWT. Il verificatore lo segnala come errore, anziché restituire un risultato valido.
Come funzionano exp, nbf e la tolleranza dell'orologio?
Un token è considerato scaduto quando exp è uguale o precedente all'ora corrente e non ancora valido quando nbf è successivo all'ora corrente. La tolleranza dell'orologio, da 0 a 3600 secondi, estende entrambi i controlli per compensare le differenze tra gli orologi dei server. Le claim presenti ma non numeriche rendono il token non valido.
Cosa significa che una firma non è valida?
Il token non è stato firmato con la chiave che avete fornito oppure la sua intestazione o il payload sono stati modificati dopo la firma. Verificate di aver incollato la chiave pubblica o il segreto corrispondente, caratteri esatti inclusi, e di aver copiato tutto il token. L'intestazione decodificata e il payload vengono comunque mostrati, così potete confrontarli.
Quali algoritmi sono supportati?
HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512 ed EdDSA con chiavi Ed25519. Le chiavi RSA devono avere almeno 2048 bit. I token crittografati (JWE) non vengono decifrati.
Il token o la chiave vengono salvati?
No. Il token e la chiave vengono usati solo in memoria per questa verifica e non vengono mai registrati né salvati. Una chiave pubblica può essere condivisa senza problemi, ma trattate con cautela i segreti HMAC e ruotate quelli che sospettate siano stati divulgati.
Quali sono le dimensioni massime del token e della chiave?
I token possono contenere fino a 65,536 caratteri e il campo della chiave fino a 262,144 caratteri, una dimensione sufficiente per documenti JWKS di grandi dimensioni. Il token deve avere tre parti base64url separate da punti, un'intestazione JSON con un membro alg e un oggetto JSON come payload.