Che cos'è l'autenticazione basata su token?

L'autenticazione basata su token è un modo per confermare l'identità di un utente o di un dispositivo. Si basa sulla verifica se l'entità in questione possiede un token emesso in precedenza.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Definire l'autenticazione basata su token
  • Descrivere i due tipi di autenticazione basata su token
  • Confrontare l'autenticazione basata su token con l'autenticazione basata sui cookie per le applicazioni Web

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Che cos'è l'autenticazione basata su token?

L'autenticazione basata su token è il processo di verifica dell'identità tramite il controllo di un token. Nella gestione degli accessi, i server utilizzano l'autenticazione basata su token per verificare l'identità di un utente, di un'API, di un computer o di un altro server.

Un token è un oggetto simbolico rilasciato da un'origine attendibile: pensa a come gli agenti delle forze dell'ordine portano con sé un distintivo rilasciato dalla loro agenzia che legittima la loro autorità. I token possono essere fisici (come una chiavetta USB) o digitali (un messaggio generato dal computer o una firma digitale).

L'autenticazione basata su token può riferirsi a diversi processi:

  1. Verifica dell'identità tramite un token fisico. Si tratta di un fattore di autenticazione ampiamente utilizzato per l'accesso: agli utenti viene chiesto di presentare il proprio token quando accedono a un account o a un dispositivo. I fattori di autenticazione sono descritti più approfonditamente in Cos'è l'autenticazione?.
  2. Riconferma dell'identità tramite un token Web. I token Web sono puramente digitali. Un token Web viene generato da un server e inviato a un client. Il token viene allegato a ciascuna richiesta del client in modo che il server conosca l'identità del client e sappia a quali dati può accedere. Questo tipo di autenticazione basata su token è in contrasto con l'autenticazione basata su cookie, che è un modo simile per ottenere lo stesso risultato (per saperne di più, vedi sotto).

Come funziona l'autenticazione con un token fisico?

L'autenticazione tramite token fisico di solito avviene durante il processo di accesso dell'utente. L'utente deve dimostrare di possedere un oggetto che nessun altro possiede. Può dimostrarlo inserendo un codice visualizzato dall'oggetto, collegando l'oggetto a un dispositivo tramite USB, collegando l'oggetto tramite Bluetooth o utilizzando altri metodi. Così come l'inserimento di una password dimostra che l'utente possiede una conoscenza che nessun altro possiede, l'utilizzo di un token dimostra che un utente possiede un elemento che solo lui possiede.

Per questo tipo di autenticazione si utilizzano due tipi di token: i token software (soft token) e i token hardware (hard token).

  • I soft token comportano l'inserimento di un codice segreto o di un messaggio inviato a un dispositivo per dimostrare il possesso del dispositivo. Spesso si tratta di un codice inviato tramite messaggio di testo a uno smartphone.
  • Gli hard token sono elementi hardware che l'utente collega direttamente a un computer o dispositivo mobile per accedere.

Come funziona l'autenticazione tramite token Web?

Un token web è un oggetto digitale, non fisico. È un messaggio inviato da un server a un client e memorizzato temporaneamente dal client. Il client include una copia del token nelle richieste successive inviate al server per confermare lo stato di autenticazione del client.

Mentre l'autenticazione basata su token fisico verifica l'identità durante la procedura di accesso, i token Web vengono emessi a seguito di un accesso riuscito e mantengono attiva la sessione di accesso.

Tuttavia, l'utilizzo di token Web per le sessioni utente non è sempre l'ideale. Molti sviluppatori sono invece sostenitori dell'utilizzo dei cookie. I token Web potrebbero essere più adatti all'uso per l'autenticazione degli endpoint API o per convalidare una connessione tra server, anziché tra server e client.

Cos'è JSON Web Token (JWT)?

Nello sviluppo Web, il termine "token Web" si riferisce quasi sempre ai token Web JSON. Un token Web JSON (JWT) è uno standard per la creazione di token Web con firma digitale che contengono dati JSON (JavaScript Object Notation). Un server crea un token che dimostra l'identità del client e glielo invia. Un JWT utilizza le firme digitali per dimostrare che il token è legittimo.

I JWT includono tre componenti:

  • Intestazione: l'intestazione fornisce informazioni sul JWT, ovvero che tipo di token è il JWT e quale metodo è stato utilizzato per firmarlo digitalmente.
  • Payload: qui possono essere inseriti tutti i dati JSON. I payload JWT per l'autenticazione includono attestazioni sull'identità dell'utente nel payload. Possono includere anche informazioni sulle autorizzazioni dell'utente, del server o dell'endpoint API.
  • Firma digitale: la firma utilizza la crittografia per firmare l'intestazione e il payload con una chiave, al fine di garantire che i dati in essi contenuti siano legittimi. Immagina la firma digitale come un sigillo anti-manomissione su una confezione di medicinale.

Autenticazione basata su token (JWT) e autenticazione basata su cookie

Talvolta i JWT vengono utilizzati per mantenere gli utenti autenticati dopo aver effettuato l'accesso a un'applicazione Web. Tuttavia, anche i cookie possono essere utilizzati per questo scopo.

Un cookie è un piccolo file di dati che un server invia a un client. Quando un utente accede a un'applicazione Web, il server genera un cookie e lo invia al dispositivo client (solitamente il computer o lo smartphone dell'utente). Il dispositivo client memorizza il cookie nella cache del browser e include una copia del cookie nelle richieste future al server, in modo simile a come possono essere utilizzati i JWT. Una volta che l'utente si disconnette, il browser elimina il cookie.

I cookie hanno dimensioni di file molto più ridotte rispetto ai JWT, perché i JWT includono intestazioni e firme digitali oltre al payload. Al contrario, il cookie contiene solo il payload. Ciò li rende molto più efficienti in termini di prestazioni Web e larghezza di banda.

  • Prestazioni Web: un cookie si carica più rapidamente perché contiene meno informazioni: pensa a come una foto viene scaricata più rapidamente di un video.
  • Larghezza di banda: poiché i cookie sono più piccoli, riducono la quantità totale di dati che devono passare attraverso le reti tra il client e il server. Ciò può comportare un risparmio sui costi rispetto ai JWT per l'operatore dell'applicazione Web.

I JWT non sono ottimizzati per le prestazioni perché includono firme digitali, che garantiscono che il loro contenuto non sia stato manomesso. Ma se un'applicazione Web utilizza HTTPS (come dovrebbe), un cookie dovrebbe comunque essere a prova di manomissione. HTTPS crittograferà e firmerà il cookie insieme a tutti gli altri dati HTTP scambiati tra client e server e i malintenzionati non dovrebbero essere in grado di falsificarli o intercettarli durante il transito, a meno che non stiano eseguendo un attacco di interposizione.

I JWT sono più adatti per le API e le connessioni da server a server. Tali utilizzi non hanno bisogno di crescere molto: un'applicazione Web può avere un milione di utenti, ma non avrà un milione di connessioni API. Ciò riduce il potenziale impatto sulle prestazioni e la larghezza di banda. Tuttavia, altri metodi di autenticazione, come il mutual TLS, sono talvolta più efficienti per le API scopri di più sul mutual TLS.

Informazioni sulla gestione degli accessi