Cos'è OAuth?

OAuth, o Open Authorization, è uno standard aperto che consente agli utenti di concedere alle applicazioni di terze parti l'accesso alle proprie risorse senza dover condividere le proprie credenziali di accesso. Invece di esporre le password degli utenti, OAuth autorizza le app di terze parti a utilizzare token di accesso temporanei per concedere l'accesso per conto dell'utente.

Ad esempio, supponiamo che tu stia utilizzando un'app di terze parti come Mailchimp, un popolare strumento di e-mail marketing, e desideri importare i tuoi contatti Google per creare una mailing list. Invece di scaricare e caricare manualmente ogni contatto su Mailchimp, OAuth ti consente di connettere in modo sicuro il tuo account Google a Mailchimp, garantendo un accesso limitato ai tuoi contatti senza esporre la tua password.

OAuth vs OAuth 2.0: qual è la differenza?

OAuth, o OAuth 1.0, richiede che ogni richiesta di autorizzazione sia firmata con una firma crittografica. Ciò significa che l'app di terze parti deve firmare la richiesta con una chiave segreta condivisa, che il server di autorizzazione deve replicare per verificare la richiesta. Sebbene le firme crittografiche garantiscano che la richiesta non sia stata alterata, non crittografano i dati, quindi sono vulnerabili all'intercettazione o al furto durante il transito.

OAuth 2.0 semplifica il processo di autorizzazione sostituendo le firme crittografiche con la crittografia HTTPS, fornendo una trasmissione sicura dei dati end-to-end. OAuth 2.0 utilizza token di accesso di breve durata e token di aggiornamento per migliorare la sicurezza riducendo al minimo l'esposizione dei token. Offre inoltre una maggiore flessibilità supportando diversi flussi di autorizzazione in base al tipo di applicazione, come app web, app mobili e comunicazione da server a server.

FunzionalitàOAuth 1.0 OAuth 2.0
Sicurezza Utilizza firme crittografiche con una chiave segreta condivisa per ogni richiesta. Previene la manomissione ma non l'intercettazione.Utilizza la crittografia HTTPS/TLS per una trasmissione sicura dei dati end-to-end
Sistema di token Tipo di token singolo senza scadenza standardUtilizza token di accesso di breve durata e token di aggiornamento per una maggiore sicurezza
Richiedi la verifica Sia l'app che il server devono generare firme corrispondenti per verificare le richiesteTLS gestisce la crittografia e la verifica delle richieste
Flussi di autorizzazione Flusso unico per tutti i casi d'usoFlussi multipli che supportano diversi tipi di applicazioni (web, mobile, server-to-server)
Complessità di implementazione Complesso a causa dei requisiti di firma crittograficaImplementazione più semplice grazie all'utilizzo di HTTPS
Uso moderno Meno comune nelle applicazioni moderneStandard di settore per applicazioni moderne
Compromesso di sicurezza Livello di sicurezza aggiuntivo della firma, ma più complessoSi basa sulla sicurezza TLS ma è più semplice da implementare correttamente
Consigliato perSistemi legacy che richiedono la verifica della firma La maggior parte delle applicazioni e delle API moderne

Sebbene sia OAuth che OAuth 2.0 siano opzioni pratiche, OAuth 2.0 è consigliato perché è più facile da implementare e più comunemente usato nelle applicazioni moderne.

Come funziona OAuth

Ecco una guida passo-passo sul funzionamento di OAuth 2.0 tramite il flusso di concessione del codice di autorizzazione:

  1. L'utente avvia l'autorizzazione: Un utente desidera concedere a un'applicazione di terze parti (denominata client) l'accesso alle proprie risorse ospitate su un server. In genere, questo avviene quando l'utente fa clic su un pulsante come "Accedi con Google" o "Connetti a GitHub" sull'applicazione client.
  2. Il client richiede l'autorizzazione: Il client reindirizza l'utente all'endpoint di autorizzazione del server di autorizzazione. La richiesta include parametri quali: client_id, redirect_uri, response_type=code, scope e state (per la protezione CSRF). All'utente può essere richiesto di autenticarsi (se non ha già effettuato il login) e di approvare o negare l'accesso richiesto.
  3. L'autorizzazione è concessa: Se l'utente approva la richiesta, il server di autorizzazione reindirizza il browser dell'utente al redirect_uri del client. Nell'URL è incluso un codice di autorizzazione insieme al parametro state, che il client deve verificare per assicurarsi che la richiesta non sia stata manomessa o intercettata.
  4. Il client richiede un token di accesso: Il client invia una richiesta all'endpoint del token per scambiare il codice di autorizzazione con i token. Questa richiesta deve includere: authorization_code, client_id, client_secret(se applicabile), redirect_uri (deve corrispondere alla richiesta originale) e grant_type=authorization_code.
  5. Il client riceve i token di accesso e di aggiornamento: Se la richiesta viene convalidata, il server di autorizzazione emette un token di accesso per autenticare le richieste API e un token di aggiornamento per ottenere nuovi token di accesso quando quello attuale scade. Il client memorizza questi token in modo sicuro e utilizza il token di accesso nelle richieste API.
  6. Il client utilizza il token di aggiornamento: Quando il token di accesso scade, il client può richiederne uno nuovo inviando una richiesta di aggiornamento del token all'endpoint del token. Per ottenere un nuovo token di accesso, il client deve inviare una nuova richiesta all'endpoint del token con i seguenti criteri: client_id, client_secret, refresh_token, e grant_type=refresh_token.

Vantaggi di OAuth

L'uso di OAuth offre diversi vantaggi, come la riduzione del rischio di furto delle credenziali, il miglioramento dell'esperienza utente e l'abilitazione del Single Sign-On (SSO).

Riduce il rischio di furto o uso improprio delle credenziali

OAuth elimina la necessità per gli utenti di condividere le proprie credenziali direttamente con applicazioni di terze parti. Si affida invece a un server di autorizzazione per gestire l'accesso, riducendo significativamente il rischio di esposizione delle credenziali, soprattutto in caso di violazione dei dati. OAuth 2.0 utilizza token di accesso di breve durata che garantiscono un accesso limitato alle risorse per un periodo di tempo specifico. Questi token possono essere revocati dall'utente in qualsiasi momento, garantendo che l'accesso sia temporaneo e rimanga sotto il controllo dell'utente.

Migliora l'esperienza dell'utente

OAuth semplifica l'esperienza utente consentendo agli utenti di accedere a più account e risorse con i loro account esistenti, eliminando la necessità di creare nomi utente e password separati per ogni servizio. Questo accelera l'accesso e riduce il fastidio di gestire più set di credenziali di accesso.

Abilita il Single Sign-On

OAuth abilita l'SSO consentendo agli utenti di accedere una sola volta con un provider di servizi attendibile e quindi di utilizzare più app senza reinserire le credenziali. Finché l'utente rimane connesso al provider, può utilizzare senza problemi altre app collegate allo stesso account. Ad esempio, un utente che ha effettuato l'accesso a Google può accedere anche alle app che si affidano a Google per l'autenticazione.

Svantaggi di OAuth

Nonostante i suoi vantaggi, OAuth presenta alcuni rischi per la sicurezza, tra cui la possibilità che i token vengano compromessi se non vengono archiviati o trasmessi in modo sicuro e che gli utenti possano comunque essere vulnerabili agli attacchi di phishing.

I token possono essere compromessi se non vengono archiviati in modo sicuro

I token di accesso e i token di aggiornamento sono obiettivi preziosi per i criminali informatici perché forniscono accesso diretto ai dati e alle risorse degli utenti. Se i token vengono archiviati in modo improprio, gli autori delle minacce possono comprometterli, con il rischio di accessi non autorizzati e account compromessi.

I token possono essere compromessi se non vengono trasmessi in modo sicuro

Se i token vengono inviati tramite una connessione non protetta, ad esempio utilizzando HTTP anziché HTTPS, possono essere intercettati da un attacco Man-in-the-Middle (MITM). Una volta compromesso, un token può essere utilizzato per ottenere l'accesso non autorizzato alle risorse di un utente.

Suscettibilità agli attacchi di phishing

OAuth si basa sul reindirizzamento degli utenti a un server di autorizzazione per concedere i permessi, ma questo processo può essere sfruttato negli attacchi di phishing. In un attacco di phishing, un utente malintenzionato induce gli utenti a inserire le credenziali in una pagina di accesso falsa che imita il server di autorizzazione legittimo. Se gli utenti non notano la differenza, possono inserire inconsapevolmente le proprie credenziali, consentendo agli aggressori di accedere ad account e dati sensibili.

Acquista ora