Codificatore di JWT (generazione e firma)
Strumento per sviluppatori che, a partire dall'intestazione e dal contenuto in JSON, genera all'istante un gettone JWT firmato con HMAC secondo gli algoritmi HS256, HS384 o HS512. Nulla di quanto inserite, chiave segreta compresa, viene trasmesso a un servente: tutto avviene nel navigatore.
Gli algoritmi di firma HMAC previsti
| Algoritmo | Funzione di sintesi | Lunghezza della firma | Descrizione |
|---|---|---|---|
| HS256 | SHA-256 | 256 bit (32 byte) | La firma HMAC più diffusa, supportata praticamente da ogni libreria per i gettoni JWT. Tenete presente che per i gettoni di identità di OpenID Connect l'algoritmo obbligatorio e predefinito è RS256, a chiave pubblica; lì HS256 è solo facoltativo. |
| HS384 | SHA-384 | 384 bit (48 byte) | Scelta intermedia per chi desidera un margine di sicurezza maggiore con una firma più lunga di quella di HS256. |
| HS512 | SHA-512 | 512 bit (64 byte) | La firma più lunga, che si usa di norma insieme a una chiave segreta casuale sufficientemente estesa. |
Creare e firmare un JWT
Questo strumento assembla sul momento un JWT a partire dal JSON dell'intestazione e del carico utile, firmandolo con HMAC mediante HS256, HS384 o HS512. Tutto ciò che inserite, la chiave segreta compresa, viene trattato nel solo browser e non è mai inviato a un server.
Ciò che qui più spesso si fraintende è che la firma serve a rilevare manomissioni e non è una cifratura. L'intestazione e il carico utile di un JWT sono soltanto codificati in Base64URL, sicché chiunque abbia il token può leggerne il contenuto senz'altro. Ecco perché password e dati personali non hanno posto in un carico utile. L'altro punto riguarda la natura della chiave: la famiglia HS si regge sul fatto che chi firma e chi verifica condividano lo stesso segreto. Se la verifica va affidata altrove, vorrete un procedimento a chiave pubblica come RS256 o ES256, che vi risparmia di consegnare il segreto.
Come crearne uno
-
Inserite il JSON dell'intestazione
Ha la forma
{"alg":"HS256","typ":"JWT"}. Tenetelo in accordo con l'algoritmo scelto. -
Inserite il JSON del carico utile
Scrivetevi le rivendicazioni che vi occorrono, come
sub,iatedexp. Lasciate fuori tutto ciò che deve restare segreto. - Scegliete l'algoritmo di firma Sono disponibili HS256, HS384 e HS512; il numero indica la lunghezza in bit dell'impronta.
- Fornite il segreto e raccogliete il token Ne esce una stringa di tre parti unite da punti.
Consigli per sfruttarlo al meglio
- Il gettone è firmato soltanto dall'interfaccia crittografica del navigatore e nulla di quanto inserite, chiave segreta compresa, giunge ai serventi di toolbase.cc.
- Cambiando algoritmo di firma, il campo
algdell'intestazione JSON si riscrive da sé. Per aggiungere altri parametri dell'intestazione, comekid(identificativo della chiave), modificate direttamente l'intestazione. - Lo strumento prevede soltanto il metodo HMAC, cioè a chiave condivisa. Se vi occorre una firma a chiave pubblica come RS256 o ES256, usate una libreria dal lato del servente.
- Dopo aver modificato intestazione o contenuto, premete di nuovo il pulsante di generazione: fino ad allora resterà visibile il gettone prodotto con il contenuto precedente.
- Per esaminare subito il gettone generato, incollatelo nello strumento affine, il decodificatore di JWT, che ne mostrerà intestazione e contenuto.
Quando torna utile
Nel provare il comportamento di un'API
Poter coniare un token con le rivendicazioni che si vogliono rende spedito il percorrere i rami di una regola di autorizzazione.
Nel verificare come sia trattata la scadenza
Create un token il cui exp cada nel passato e accertate che un token scaduto venga respinto come si conviene.
Nel preparare token per le prove
Potete produrre un token dal contenuto fisso che faccia da materiale in una prova automatizzata.
Nell'apprendere la struttura di un JWT
Generare più volte variando l'ingresso lascia vedere in quale punto del token finisca ciascun pezzo.
Termini del JWT
- Intestazione
- La prima parte, che dichiara l'algoritmo e il tipo. Porta
algetyp. - Carico utile
- La seconda parte, che ospita le rivendicazioni. È soltanto codificata in Base64URL e non è in alcun modo cifrata.
- Firma
- La terza parte, calcolata da intestazione e carico utile con una chiave. Serve a rilevare manomissioni e nulla fa per celare il contenuto.
- Rivendicazione
- Ciascuna voce entro il carico utile. Fra quelle standard figurano
subper il soggetto,iatper l'ora di emissione edexpper la scadenza. - HMAC
- Un procedimento di autenticazione dei messaggi a chiave condivisa. Tanto chi firma quanto chi verifica devono possedere lo stesso segreto.
- Base64URL
- Base64 con i simboli sostituiti per poter viaggiare in una URL:
+e/diventano-e_, e il riempimento finale viene tolto.
Domande frequenti
alg, la verifica del gettone in un'altra realizzazione può fallire: fate sempre in modo che i due coincidano.
A proposito — perché la firma di un JWT può avvenire soltanto nel navigatore
Gli algoritmi di firma dei JWT si dividono grosso modo in quelli a chiave condivisa, cioè HMAC nelle varianti HS256, HS384 e HS512, e in quelli a chiave pubblica, come RS256 ed ES256, in cui si firma con la chiave privata e si verifica con quella pubblica. I primi si calcolano interamente nel navigatore, senza alcuna libreria esterna, servendosi dell'interfaccia crittografica standardizzata dal consorzio del web: per questo lo strumento si limita di proposito al metodo HMAC.
La sicurezza di una firma HMAC dipende interamente dalla difficoltà di indovinare la chiave segreta, non dal contenuto dell'intestazione o del corpo. La norma sugli algoritmi dei gettoni web (RFC 7518) impone come obbligatoria (MUST) per HS256 una chiave di almeno 256 bit, cioè 32 byte: usare una parola breve o una stringa presente nei dizionari espone al rischio che la firma venga contraffatta con un attacco esaustivo. In esercizio si deve usare una stringa casuale sufficientemente lunga, prodotta da un generatore di numeri casuali.
Questo strumento è un'utilità per sviluppatori, pensata per le prove durante lo sviluppo di un'interfaccia e per collaudare la logica di verifica delle firme dei richiami web. La chiave inserita resta nella memoria del navigatore e non viene trasmessa all'esterno, ma il rischio che un dispositivo condiviso o un'estensione del navigatore raccolgano gli appunti o quanto digitate non è mai nullo: si raccomanda vivamente di non inserire in strumenti di questo genere, nemmeno per prova, la chiave usata realmente in produzione.