Strumenti per sviluppatori · Decodificatore JWT
RFC 7519 e la famiglia JOSE: JWT, JWS, JWE, JWK e JWA Spiegazione
· Sfondo
jwt crittografia standard
JWT è un membro di una famiglia di specifiche del gruppo di lavoro IETF JOSE. Questo post spiega cosa definisce ciascun RFC, come si incastrano e perché un JWT è solitamente un JWS.
Cinque acronimi, un token: perché la documentazione menziona JWS e JWE quando hai chiesto solo di JWT
La documentazione dei token si sposta tra JWT, JWS, JWE, JWK e JWA perché descrivono diversi livelli dello stesso ecosistema. La confusione inizia quando "JWT" viene utilizzato come abbreviazione per ogni token compatto firmato in tre parti. Separare le affermazioni dalla busta e dalla rappresentazione chiave rende più semplice ragionare sull'implementazione.
Il decoder di ToolAcre è intenzionalmente più stretto della famiglia. Gestisce input a forma di JWS in tre parti i cui primi due segmenti decodificati sono oggetti JSON. Rileva l'input compatto crittografato in cinque parti e si interrompe, perché la lettura del testo cifrato senza le chiavi del destinatario non decodificherebbe la stessa cosa.
I documenti JOSE definiscono i relativi formati; questo repository non stabilisce la sequenza temporale del gruppo di lavoro
Le specifiche correlate provengono dal lavoro di IETF JOSE, ma le fonti del repository non stabiliscono la tempistica organizzativa dettagliata richiesta dallo schema. Questo articolo evita quindi di inventare date o cronologia dei processi e si concentra sulle relazioni di formato osservabili nello strumento e nel piano.
La questione pratica è quale livello possiede ciascuna decisione. I nomi delle attestazioni descrivono le istruzioni dell'applicazione, le firme proteggono il materiale codificato, la crittografia protegge il contenuto, gli oggetti chiave JSON rappresentano le informazioni sulla chiave e le operazioni sui nomi degli identificatori dell'algoritmo. Nessun acronimo sostituisce gli altri.
JWS (RFC 7515) — firma di contenuti arbitrari e serializzazione compatta utilizzata dai JWT
JWS descrive i contenuti firmati o protetti da MAC. La sua forma compatta ha tre segmenti: intestazione protetta, carico utile e firma. L'input di firma utilizza i primi due segmenti codificati uniti da un punto. Un JWT viaggia comunemente in questa busta, che è il modulo ToolAcre divide e ispeziona.
L'intestazione e il payload possono essere decodificati in JSON, mentre la firma è costituita da byte anziché da un terzo oggetto. ToolAcre segnala presenza e dimensione della firma ma la contrassegna sempre come non verificata. Pertanto può illustrare la struttura JWS senza rivendicare alcun risultato crittografico.
JWE (RFC 7516) — crittografia del contenuto, con una serializzazione in cinque parti
JWE descrive il contenuto crittografato. La sua forma compatta ha cinque segmenti che rappresentano un'intestazione protetta, il materiale della chiave crittografata, il valore di inizializzazione, il testo cifrato e il tag di autenticazione. Quattro punti sono quindi un forte indizio strutturale che un decoder JWT in tre parti ha ricevuto una busta diversa.
ToolAcre emette un errore JWE specifico e spiega che i contenuti non possono essere letti senza la chiave di decrittazione. Non tratta il testo cifrato come JSON non valido né tenta di visualizzare byte casuali. È anche possibile comporre la crittografia e la firma, ma l'elaborazione annidata è esterna a questo percorso.
JWK e JWA (RFC 7517 e 7518) — che rappresentano le chiavi come JSON e denominano gli algoritmi
JWK fornisce una rappresentazione JSON per le informazioni sulla chiave crittografica, mentre JWA nomina gli identificatori dell'algoritmo e i parametri correlati utilizzati in JOSE. La loro esistenza non significa che un token possa scegliere la propria chiave o algoritmo affidabile. Un verificatore deve vincolare sia l'emittente che la politica dell'applicazione.
Le note dell'algoritmo ToolAcre spiegano solo un insieme finito di etichette presenti nell'origine e chiamano qualsiasi altra cosa non riconosciuta. Sono descrizioni, non implementazioni. Il decodificatore non importa un JWK né esegue un algoritmo da JWA, che mantiene esplicito il limite di ispezione.
JWT (RFC 7519): il formato delle rivendicazioni utilizzato su JWS o JWE
JWT definisce un oggetto attestazioni e nomi registrati come emittente, oggetto, pubblico e NumericDates. Tali rivendicazioni possono essere trasportate in una struttura JOSE firmata o crittografata. Il livello del carico utile quindi risponde a “quali affermazioni sono rappresentate”, mentre la busta risponde a come tali byte sono protetti o nascosti.
ToolAcre si aspetta che il payload decodificato sia un oggetto JSON ed elenca le sue affermazioni. Un array, un numero o un valore nullo vengono rifiutati per questo strumento. Anche un oggetto ben formato rimane non attendibile finché la relativa busta non viene elaborata da un verificatore o destinatario configurato.
Ciò che questo non copre: i profili successivi come RFC 8725 best practice e RFC 9068 token di accesso, che hanno i propri post
Successivi documenti sulle migliori pratiche e sui profili potranno restringere il modo in cui questi meccanismi generali dovrebbero essere utilizzati. Meritano un trattamento separato perché un formato base non fornisce policy specifiche per l'emittente, il pubblico o il tipo di token. Questo articolo non afferma che il decodificatore implementi tale profilo.
Durante la revisione di un sistema, annotare il profilo esatto, la dotazione prevista, gli algoritmi accettati, la fonte chiave e le regole di reclamo. Tale elenco impedisce che la familiarità degli acronimi si trasformi in un presupposto di compatibilità o sicurezza.
Conclusione: JWT sono le affermazioni, JWS è la busta: il decodificatore ToolAcre JWT legge il modulo compatto JWS e mostra l'intestazione JWT e le affermazioni all'interno
JWT nomina il livello delle attestazioni; JWS e JWE forniscono buste di protezione; JWK rappresenta i dati chiave; JWA nomina le scelte dell'algoritmo. ToolAcre legge la forma comune firmata in tre parti e mostra l'intestazione e le affermazioni rifiutandosi di verificare o decrittografare.
Usa quella mappa per porre la domanda successiva giusta. Leggibile JSON identifica il livello di attestazione. Tre o cinque segmenti identificano le probabili famiglie di buste. La fiducia dipende ancora dalla crittografia e dalla policy configurate in modo indipendente, non dal decodificatore che riconosce un acronimo.