API Authentication: cos’è, come funziona e benefici
Metodi di autenticazione API: quali sono, come funzionano e come vengono usati per proteggere i dati sensibili delle applicazioni
- Autore: Alessandra Caraffa
- //
- Data: 25/07/2024
- //
- Lettura: 5 min
Quando si parla di API Authentication Methods si fa riferimento ai diversi sistemi di autenticazione che vengono utilizzati nelle infrastrutture API per verificare l’identità degli utenti.
Esistono diversi meccanismi di autenticazione API: ci sono quelli criptati e quelli in chiaro, quelli che utilizzano un nome utente e una password, quelli che sfruttano le API keys e quelli che funzionano tramite token.
Ogni metodo di autenticazione presenta dei vantaggi e dei punti deboli, caratteristiche che lo rendono più o meno adatto a una data applicazione. Tutti questi processi, però, hanno un obiettivo comune: proteggere i dati sensibili e garantire che l’API non venga utilizzata in modo improprio.
Cos’è l’Authentication API?
L’Autenticazione API è il processo che convalida l’identità degli utenti quando cercano di connettersi a un’applicazione. I meccanismi di autenticazione API garantiscono che solo gli utenti riconosciuti possano accedere alle applicazioni, e per questo motivo sono alla base della sicurezza delle infrastrutture API.
Quando un utente effettua una chiamata API, un protocollo software invia le credenziali di accesso che devono essere utilizzate per la richiesta.
Il funzionamento di questo meccanismo può essere molto diverso da un caso all’altro: se per esempio si sta utilizzando una API Basic Authentication, l’utente inserirà username e password all’interno dell’header di ogni chiamata API, mentre se si sceglie di implementare il metodo OAuth il processo prevede un flusso più complesso, che è anche più sicuro.
Vediamo quindi quali sono i metodi di autenticazione API più utilizzati e come funzionano.
HTTP Basic Authentication
Questo metodo di autenticazione è in assoluto il più semplice da implementare nei propri sistemi, in quanto non richiede pagine di login, ID o handshake di sorta.
Nella HTTP Basic Authentication, il client invia le richieste inserendo username e password (codificate in Base64) all’interno dell'intestazione HTTP utilizzata per la trasmissione. Le credenziali devono essere contenute in ogni chiamata API.
È generalmente sconsigliata nei contesti che trattano dati sensibili a causa della sua implicita vulnerabilità: le credenziali sono piuttosto semplici da decodificare, quindi ogni volta che username e password vengono condivisi si rischia che vengano intercettati da utenti con intenzioni malevole. Proprio per questo motivo si consiglia di utilizzarla solo su HTTPS (SSL).
API Token Authentication: l’autenticazione Bearer
Un altro dei possibili metodi per l’API Rest Authentication è il sistema tramite token Bearer (traducibile grossomodo come “al portatore”). In questo tipo di autenticazione HTTP, il client ha a disposizione un token che consente l’accesso a una determinata risorsa e che deve inserire nell’intestazione Authorization quando effettua richieste verso Url protette. Se la richiesta non contiene un token valido, viene respinta.
Questo tipo di autenticazione è decisamente più sicura: innanzitutto, utilizzando dei token si evita di far viaggiare le credenziali all’interno di ogni richiesta. Inoltre, a differenza delle credenziali di un’autenticazione HTTP Basic, i token hanno una data di scadenza.
Autenticazione tramite API Keys
Le API Keys sono elementi fondamentali dell’autenticazione API: pensate come una possibile soluzione ai problemi dell’autenticazione di base HTTP, le chiavi API sono valori unici che vengono assegnati ad ogni utente al primo accesso, e che vengono in seguito utilizzati per dimostrare che si tratta dello stesso utente.
Le API Keys possono essere utilizzate in combinazione con diversi metodi di autenticazione, e nella pratica si comportano esattamente come una password. In base alle impostazioni, il client può inserire la sua API key nella query string, all’interno dell’intestazione o come cookie.
Le API key non possono essere considerate come un metodo di autenticazione sicuro, a meno che non siano utilizzate insieme a protocolli di sicurezza HTTPS/SSL o in combinazione con altri metodi di API Authentication. D’altro canto, permettono di monitorare il flusso degli utenti in maniera estremamente efficace.
Autenticazione con JSON Web Token (JWT)
L’Autenticazione JWT, che sta per JSON Web Token, è un meccanismo compatto e stateless per l'autenticazione delle API, ovvero non prevede la memorizzazione dei dati dell’utente sul server.
In questo metodo di autenticazione, quando l’utente accede all’applicazione il server API crea un JWT (che può essere firmato digitalmente e crittografato) che contiene l’identità dell’utente. Quest’ultimo poi deve includere il JWT in ogni richiesta.
Anche quando si utilizza questo metodo di autenticazione, è fondamentale gestire al meglio la sicurezza delle chiavi di accesso ai token: una loro compromissione, infatti, potrebbe essere la porta d’accesso di utenti malintenzionati all’interno del sistema.
API Oauth Authentication
Il problema dell’esposizione delle credenziali è stato superato con il metodo di autenticazione OAuth, o Open Authorization, che sfrutta un flusso di autorizzazione in grado di concedere l’accesso alle risorse protette senza che il client debba rivelare le proprie chiavi di accesso.
Nel flusso OAuth, il client avvia una richiesta al server, fornendo un ID per l’identificazione. Il server, dopo aver verificato l’identità dell’utente, contatta il proprietario delle risorse per confermare l’autorizzazione e rilascia all’utente un token (o un codice di autorizzazione) che può essere utilizzato per accedere alle risorse richieste.
L’API OAuth 2.0 Authentication, che offre maggiore flessibilità e scalabilità rispetto a OAuth 1.0, è oggi considerata lo standard per l’autenticazione API. Utilizzano questo metodo, tra gli altri, le API di GitHub e di Google.
È un sistema estremamente adattabile, poiché include i token nelle intestazioni HTTP o HTTPS, anche su siti web, app e plugin, ma la sua integrazione può richiedere del lavoro aggiuntivo da parte degli sviluppatori.
Autenticazione API e sicurezza
Secondo un recente report di Imperva, il numero di cyberattacchi mirati alle API è in costante crescita: nel 2023 erano il 27% del totale, con una crescita del 10% rispetto all’anno precedente. E anche gli attacchi di tipo ATO (Account Takeover) sono aumentati, passando dal 35 al 46%..
Le API non protette, infatti, costituiscono una superficie d’esposizione che può rivelarsi molto fruttuosa per gli utenti con cattive intenzioni, ed è per questo che vanno studiati dei meccanismi di sicurezza in grado di tutelare le proprie risorse e i propri clienti da eventuali azioni malevole.
L'autenticazione, in questo senso, è un aspetto cruciale della sicurezza delle API, perché offre all’infrastruttura un layer di sicurezza fondamentale in grado di proteggere i dati, le funzionalità e i servizi delle applicazioni garantendo che solo gli utenti, i server e le applicazioni approvati possano effettuare chiamate API ai vostri server.