Come decodificare stringhe Base64 (e payload JWT)

Base64 è una codifica reversibile, non una cifratura. Decodificalo in un passaggio, gestisci correttamente Unicode e leggi le sezioni JWT che usano Base64url.

Cos’è davvero Base64

Base64 mappa dati binari su 64 caratteri ASCII stampabili. È totalmente reversibile e non usa chiavi: è una codifica, non una cifratura — non usarlo mai per «nascondere» segreti.

Codifica e decodifica

Nel browser codifichi con btoa e decodifichi con atob. Per il testo non ASCII passa per un round-trip in UTF-8, così caratteri come é, ü o 你 sopravvivono invece di diventare byte corrotti.

Leggere un JWT

Un JWT è formato da tre sezioni Base64url separate da punti: header, payload e signature. Decodifica le prime due per leggere i claim. La signature è binaria e non è pensata per essere letta da persone.

Base64 vs Base64url

Il Base64 standard usa + e / con padding =. La variante URL-safe Base64url li sostituisce con - e _ e toglie il padding, in modo che il valore stia al sicuro dentro URL e JWT.

Decodificare non è verificare

Decodificare un JWT mostra i claim ma non dice nulla sull’autenticità. Chiunque può falsificare un token con payload "role":"admin"; solo la signature, verificata con la chiave dell’emittente, prova che il token è autentico. Non prendere mai una decisione di fiducia su un token non verificato.

Claim JWT comuni e cosa significano

iss è l’emittente, sub il soggetto (id utente), aud l’audience prevista, exp la scadenza (secondi Unix), iat l’istante di emissione, nbf «not before» e jti un id univoco. I claim personalizzati stanno a fianco di questi. Controlla sempre exp e aud lato server, non solo lato client.

Padding e varianti URL-safe

Spesso Base64url arriva senza padding =. Per decodificare nel codice, riempi la lunghezza fino a un multiplo di 4 con =, sostituisci - con + e _ con / e poi passa attraverso un normale decoder Base64. atob nel browser non accetta direttamente Base64url — la conversione va fatta prima.