Analizziamo assieme il più diffuso protocollo di autorizzazione attualmente disponibile sul mercato.

Si sente sempre parlare di autenticazione e autorizzazione, elementi ormai divenuti essenziali per il corretto funzionamento delle piattaforme web based e la protezione dei propri utenti.
Se dapprima si chiedeva all’utente di impiegare uno username e una password per accedere alla propria area riservata di un servizio web, attualmente tale sistema non è più considerato sicuro, proprio per la facilità con cui può essere aggirato.

Col tempo la maggior parte dei siti web e delle piattaforme online hanno iniziato a sfruttare i servizi di autenticazione di terzi.
Tuttavia, molti di questi non impiegavano un sistema di autorizzazione sicuro, cosa che comporta la condivisione delle password utente.
Questo ha portato alla creazione e all’adozione di un protocollo di autorizzazione, che prende il nome di OAuth.
Vediamo di cosa si tratta e perché dovrebbe essere usato come standard.

Open Authorization

Differenze tra autorizzazione e di autenticazione

Bisogna innanzitutto stabilire la differenza tra protocollo di autenticazione e protocollo di autorizzazione.

Il protocollo di autenticazione si occupa di verificare l’identità dell’utente che accede ad una piattaforma web based, o ad un qualsiasi sito web.
In pratica, un utente fornisce al sistema una propria forma di autorizzazione, che siano credenziali, un token o un dato biometrico,  il protocollo si occupa di verificare la veridicità dell’informazione ricevuta in input.

Attualmente distinguiamo tre differenti tipi di autenticazione:

  1. SFAautenticazione a singolo fattore
    L’utente inserisce un singolo fattore di autenticazione, che può essere una password, un token biometrico o un altro elemento.
  2. 2FAautenticazione a due fattori
    richiede all’utente due fattori di autenticazione. Oltre alle classiche credenziali di accesso, è necessario un ulteriore elemento per essere riconosciuti dal sistema, come una OTP (One Time Password), o un’impronta biometrica.
  3. MFAautenticazione a più fattori
    tale autenticazione richiede all’utente più fattori di autenticazione. Alle credenziali si aggiungono altri elementi a sua scelta: un token biometrico, una OTP, o un altro elemento.

Il protocollo di autorizzazione determina a quali risorse di sistema l’utente autenticato può effettivamente avere accesso.
Queste possono essere: dati, applicazioni, reti, o sezioni specifiche di un sito.

Per esempio, lo studente che si autentica ad una piattaforma universitaria online, può monitorare la propria carriera, prenotarsi agli appelli, gestire la propria contabilità e verbalizzare gli esami sostenuti, ma non può accedere ai servizi riservati agli amministratori, o ai docenti.

Esistono quattro metodi diversi di controllo per l’autorizzazione:

  • RBAC
    questo controllo distingue i differenti ruoli assegnati a tutti gli utenti, permettendo loro di accedere alle risorse previste dal loro ruolo.
  • ABAC
    prevede un set di attributi basati sull’utente, sull’ambiente e sulle risorse, al fine di verificare i criteri di appartenenza dell’utente autenticato e di concedergli l’accesso ai sistemi che gli competono.
  • MAC
    tale metodo impiega un set di etichette e categorie di sicurezza predefinite in modo da accertare che determinati utenti, o sistemi, accedano a specifiche risorse. In altre parole, l’accesso viene limitato in base alla sensibilità dei dati.
  • DAC
    prevede la concessione di determinati privilegi all’utente autenticato. In pratica è il proprietario della risorsa il perno centrale dell’autorizzazione, che può concederla a uno, o più utenti, laddove lo reputa necessario.

Cos’è OAuth?

OAuth è un protocollo di autorizzazione, di cui si è discusso nel paragrafo precedente, il cui acronimo significa Open Authorization.
Permette alle applicazioni che lo richiedono di ottenere un accesso garantito e sicuro ai dati privati di un’altra applicazione, o di un sito web.
A differenza di altri sistemi, OAuth non condivide alcuna password utente, ma prevede l’utilizzo di un token di accesso tra utenti e servizi.
L’approvazione finale è nelle mani dell’utente, il quale stabilisce quali applicazioni o quali servizi web, possano interagire tra loro durante le sessioni online.
Un esempio pratico è l’autenticazione in un servizio web come Spotify.

In questo caso Spotify richiede un token di autenticazione e delle credenziali per accedere alla piattaforma, dando la possibilità all’utente di fornirle tramite Google. OAuth agisce da intermediario, poiché è lui a gestire le risorse che saranno condivise tra Google e Spotify.
Vediamo ora nel dettaglio come funziona il protocollo.

Un esempio pratico

Per spiegare il suo funzionamento, ricorreremo ad un esempio pratico.

Essendo un protocollo di autorizzazione, una transazione di OAuth richiede la presenza di tre attori principali:

  • l’utente
  • il consumatore
  • il servizio.

Nel nostro esempio, noi saremo gli utenti, Siteground sarà il consumatore e Google fungerà da servizio.

Vogliamo che Siteground acceda a determinate risorse di Google per permetterci di ottenere un dominio web sicuro e autenticato.
Di seguito è riportata passo passo la procedura che avviene comunemente in una transazione OAuth.

  • L’utente mostra i propri intenti e interagisce con Siteground, chiedendo l’autenticazione e l’autorizzazione mediante Google.
  • Siteground dialoga con Google, richiedendo un token. Google, il servizio, dialoga a sua volta con OAuth, il quale si occupa di generare un token di endpoint, che viene inviato al consumatore.
    Siteground lo impiega per firmare ogni richiesta, in modo che Google possa verificare che la richiesta stia giungendo effettivamente dal suo utente.
  • L’utente viene reindirizzato al provider del servizio, in questo caso Google, in modo che possa approvare il token e concedere l’autorizzazione a Siteground. Questo passaggio è cruciale, in quanto attori malevoli possono sfruttare tattiche come man-in-the-middle, o browser-in-the-browser e appropriarsi delle credenziali utente. Per cui bisogna sempre prestare attenzione che l’autorizzazione sia concessa al provider del servizio e non ad un suo terzo.
  • L’utente concede l’autorizzazione e OAuth segna il token di richiesta come convalidato, che viene poi inviato a Google.
  • Siteground, il consumatore, ottiene il token di accesso da Google e accede alle risorse protette dell’utente.

In questo scenario, OAuth ha funto da intermediario, in quanto non è stata condivisa nessuna password tra Google e Siteground, ma solo un token di autorizzazione. Questo può essere revocato in qualsiasi momento dall’utente.

OAuth Token e scopi dell’applicazione

Il server di autorizzazione autentica l’utente e verifica che questi sia autorizzato ad accedere alle proprie risorse.
Se l’autorizzazione viene convalidata, questo rilascia il token di accesso, che viene mantenuto riservato e nel proprio drive.
Questo token viene visto solo dai server di applicazione, autorizzazione e di risorse, in quanto non deve risultare leggibile da altre applicazioni presenti sullo stesso dispositivo.

Nel protocollo OAuth esistono cinque differenti metodi per ottenere il token di accesso, che sono:

  • Authorization Code Grant
  • Implicit Grant
  • Resource Owner Credentials Grant
  • Client Credentials Grant
  • Refresh Token Grant

A questo si aggiunge lo scopo.
Quest’ultimo definisce il livello di accesso che l’applicazione sta richiedendo all’utente, in quanto può richiederne uno, o più. Questa informazione è presentata all’utente sotto forma di una schermata di autorizzazione.
Il token di accesso subentra proprio in questa fase, poiché è l’utente ad autorizzare l’applicazione a sfruttarlo, garantendogli così anche l’accesso a determinati servizi, o risorse. Per esempio, l’utente può concedere a Spotify la possibilità di postare direttamente su Instagram, ma limitare LinkedIn in sola lettura.

In conclusione

OAuth è senza dubbio un protocollo di autorizzazione molto valido e collaudato. Il vantaggio di non esporre mai le credenziali utente, ma di condividere con l’applicazione un token autenticato e firmato da entrambe le parti, garantisce una maggior tutela e degli ottimi livelli di sicurezza.
Tuttavia, c’è da dire che non tutti i siti web e le piattaforme lo impiegano. Le minori ancora implementano l’autenticazione tradizionale, o quella a fattore singolo: cosa che espone enormemente l’utente agli attori malevoli della scena cybercriminale.
L’obiettivo finale è cercare di restare sempre aggiornati e di implementare il prima possibile le nuove misure di autenticazione e autorizzazione nei propri servizi web, in quanto i criminali attendono solo un nostro passo falso per colpire.


    Dichiaro di aver letto e compreso l'Informativa sul trattamento dei dati