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.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Cos'è l'autenticazione?
Che cos'è l'OAuth?
Cos'è lo standard SAML?
Autenticazione a due fattori
Autenticazione reciproca
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
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:
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).
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.
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:
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.
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.
Introduzione
Informazioni sulla gestione degli accessi
Informazioni su Zero Trust