
Qualche giorno fa stavamo facendo un po’ di brainstorming su un progetto al quale stiamo lavorando e si discuteva sui meccanismi di autenticazione necessari. Il sistema è complesso e coinvolge varie tipologie di utenti con livelli di autorizzazione differenti che possono accedere da diversi device via browser o App mobile.
Nella discussione ho notato che non a tutti era chiara la differenza tra token a API key, è successo infatti che queste due parole venissero utilizzate da qualcuno indistintamente come sinonimi.
In realtà, pur essendo entrambi oggetti utilizzati in ambito autenticazione, sono ben caratterizzati e diversi per definizione, creazione, ambito di utilizzo, durata, sicurezza e scopo.
Definizione di API Key e token
API key
Un identificatore univoco che viene utilizzato principalmente all’interno del codice per autenticare e identificare il chiamante nell’accesso a un’API. Solitamente si tratta di una lunga sequenza di lettere e numeri.
Token
Un dato che identifica una sessione utente, viene generalmente utilizzato per brevi periodi di tempo e può contenere informazioni come il ruolo dell’utente, le autorizzazioni di accesso e scadenze.
Creazione di API Key e token
API key
Vengono create “staticamente” una tantum e rimangono valide fino alla creazione di un nuova chiave. Possono opzionalmente essere configurate per scadere dopo un certo periodo di tempo.
Token
Generati dinamicamente in seguito ad un processo di login o autenticazione. Sono caratterizzati dal fatto di scadere abbastanza rapidamente ma posso essere rigenerati per mantenere la sessione.
Ambito di utilizzo di API Key e token
API key
Le API key sono utilizzate principalmente per autenticare l’accesso a servizi web, API o risorse online. Sono caratterizzate da un prefissato insieme di permessi sull’utilizzo del servizio web o API.
Token
I token sono più focalizzati su cosa un certo utente può fare o a quali dati può accedere. Possono anche indicare informazioni aggiuntive come ruoli specifici o informazioni sull’utente stesso.
Durata di API Key e token
API key
Le API key, una volta generate, possono avere una data di scadenza o rimanere valide fino alla revoca o sostituzione.
Token
I token rimangono validi generalmente per un tempo limitato e scadono abbastanza rapidamente. Possono essere rinnovati durante la sessione attiva.
Sicurezza di API Key e token
API key
Devono essere trattate con molta attenzione e scambiate attraverso canali sicuri. Per loro natura hanno lunga durata e forniscono accesso completo. Se compromesse devono essere revocate e rigenerate.
Token
I token sono stati progettati pensando alla sicurezza. Per loro natura hanno vita breve e scadono automaticamente. Un token permette di accedere solo ai dati ai quali l’utente a cui si riferisce ha accesso.
Scopo di API Key e token
API key
Utilizzate generalmente per comunicazioni da server a server, per l’accesso a dati pubblici come meteo, borsa, notizie o per integrare sistemi di terze parti.
Token
I token sono usati per per autenticare un utente di un certo sistema generalmente a livello di client. Si usano per il controllo di accesso su dati e risorse, per fornire accessi temporanei, per gestire le sessioni..
Esempi di Api Key e token
Vi è mai capitato di vedere in qualche sito web che non venisse caricata correttamente la Google Map o che ci fosse un messaggio scritto sopra? Questo avviene generalmente perché non è stata fornita una API Key richiamando le API Maps di Google. Se viene fornita una API key corretta si ha accesso a tutte le funzionalità offerte dalle API di Maps.
Fare esempi di token è un po’ più complesso e si dovrebbe analizzare qualche spezzone di codice sorgente, basti sapere che la maggior parte delle App mobili sfruttano questo meccanismo per autenticare e tenere traccia dell’utente connesso, in questo modo possono sapere che utente sta facendo l’operazione, quali sono i suoi privilegi e a quali dati può accedere. Tra i meccanismi più utilizzati che sfruttano il concetto di token c’è JWT: JSON Web Token.