Che cosa sono OAuth 2.0 e il login social?

Aggiornato: ottobre 2026

OAuth 2.0 è uno standard di autorizzazione che permette alle app di accedere a un account su un altro servizio: il login social si costruisce sopra. I due vengono quasi sempre spiegati separatamente, ed è così che la confusione sopravvive: la RFC 6749 definisce l’impianto (accesso delegato e delimitato da scope, senza condividere password), OpenID Connect aggiunge lo strato di identità, e il pulsante “Accedi con…” è la feature di prodotto che viaggia su entrambi.

Punti chiave

DomandaRisposta
OAuth 2.0Autorizzazione delegata: token delimitati da scope e con scadenza al posto delle password
La confusioneOAuth risponde a che cosa può accedere questa app – OIDC risponde chi è questo utente
Il flusso modernoAuthorization code + PKCE – i grant implicit e password sono spariti in 2.1
I tokenAccess (breve, delimitato) · refresh (ruotato) · ID (claim di identità firmati)
Login socialOIDC in un pulsante: il provider autentica, l’app riceve claim verificati

Il flusso authorization code, passo per passo

La danza dei redirect dietro ogni schermata di consenso – con i parametri che contano:

1  App → provider     /authorize?client_id=…&redirect_uri=…&scope=profile
                      &state=af3G…            ← guardia anti-CSRF, verificata al ritorno
                      &code_challenge=hK9…    ← PKCE: hash di un segreto appena creato

2  Utente ↔ provider  Accede LÀ (la password non tocca mai l'app), acconsente

3  Provider → app     redirect_uri?code=SplxlO…&state=af3G…   ← codice monouso

4  App → provider     POST /token  { code, code_verifier }    ← prova PKCE
   Provider → app     { access_token, refresh_token, id_token }

5  App → API          Authorization: Bearer <access_token>

Ecco che cosa diventa quando un backend lo avvolge – entrano i token del provider, esce una sessione verificata:

// JavaScript / Node.js — Back4app JS SDK
// Social login: the provider's tokens become a user session
const user = await Parse.User.logInWith('apple', {
  authData: { id: appleUserId, token: identityToken },
});
// First login creates the user; later logins match — session token issued

// Account linking: attach a second provider to the same user
await user.linkWith('facebook', { authData: fbAuthData });

I quattro ruoli

RuoloChi èIn termini di “Accedi con…”
Resource ownerL’utenteChi usa l’app
ClientL’app che chiede l’accessoL’app che mostra il pulsante
Authorization serverEmette codici e tokenLe pagine di accesso dell’identity provider
Resource serverL’API che custodisce i datiL’API di profilo/utente del provider
Flusso authorization code di OAuth 2.0 con PKCEL'app client reindirizza l'utente all'authorization server con un challenge PKCE; l'utente si autentica e acconsente là; il server reindirizza indietro con un codice monouso; il client scambia il codice più il verifier PKCE con access token, refresh token e ID token, poi chiama il resource server con l'access token.

1 · reindirizzato con
state + code_challenge

2 · codice monouso

3 · code + code_verifier

4 · access · refresh · ID token

5 · Bearer access_token

Utente
(resource owner)

Authorization server
accesso + consenso

App client

Resource server
(API)

L'app client reindirizza l'utente all'authorization server con un challenge PKCE; l'utente si autentica e acconsente là; il server reindirizza indietro con un codice monouso; il client scambia il codice più il verifier PKCE con access token, refresh token e ID token, poi chiama il resource server con l'access token.

Grant type: quale flusso, e che cosa ha cambiato OAuth 2.1

GrantPerUtente presente?Stato in OAuth 2.1
Authorization code + PKCEWeb, mobile, SPA – tutto ciò che coinvolge un utenteSìLa scelta predefinita – PKCE richiesto a quasi tutti i client
Client credentialsMachine-to-machine, account di servizioNoMantenuto
Device authorizationTelevisori, console, CLISì, su un secondo dispositivoMantenuto
Refresh tokenRinnovare l’accesso in silenzioNoMantenuto – rotazione o sender-constraining richiesti ai client pubblici
ImplicitSPA legacy (token nei frammenti di URL)SìRimosso
Password (ROPC)L’app raccoglie da sé la passwordSìRimosso – vanifica l’intero senso dell’operazione

OAuth 2.1 è consolidamento, non rivoluzione: le rimozioni qui sopra, più i redirect URI a corrispondenza esatta e il divieto di bearer token nelle query string – le lezioni di sicurezza accumulate in un decennio, ripiegate in un unico documento. Le spiegazioni definitorie per la maggior parte non hanno recuperato il ritardo; diverse insegnano ancora il flusso implicit senza alcun avvertimento.

OAuth vs. OpenID Connect: autorizzazione vs. autenticazione

La frase che tutti ripetono – “OAuth non è autenticazione” – merita il suo meccanismo, perché è il meccanismo a rendere sfruttabile un accesso ingenuo:

CriterionAccess token (OAuth)ID token (OIDC)
Indirizzato aIl resource server (API)L’app (aud = il suo client ID)
ProvaQuesto portatore può accedere a questi scopeQuesto utente (sub) si è autenticato presso questo emittente (iss), adesso (iat/exp), per questo accesso (nonce)
FormatoSpesso opaco per il clientJWT firmato che l’app deve validare
Si può usare per l’accesso?No – qualunque app autorizzata dall’utente ne possiede uno; non dice nulla su chi è presenteSì – è esattamente il suo mestiere

“Accedere con un semplice access token” fallisce perché gli access token sono prova trasferibile di permesso, non di presenza: un’app malevola che abbia ottenuto un token per i propri scopi potrebbe riutilizzarlo altrove per impersonare l’utente. OpenID Connect esiste proprio per chiudere quella falla – gli stessi flussi, più un’attestazione di identità legata crittograficamente all’app.

Login social: il pulsante sopra l’impianto

Il login social è OIDC confezionato come UX: il provider autentica, l’app riceve claim verificati e crea o ritrova un account – nessuna password archiviata, nessun flusso di reimpostazione da mantenere, la MFA del provider ereditata gratis. I trade-off di prodotto meritano numeri onesti. Le promesse di un 20–50 % di registrazioni in più sono folklore dei fornitori; i test controllati hanno misurato piuttosto un 3 %, anche se oggi circa un terzo degli accessi consumer arriva per via social – gli utenti vogliono chiaramente l’opzione. Le pratiche che spostano davvero la conversione: offrire due o tre provider che il pubblico usa per davvero (la griglia di partenza di pulsanti danneggia in modo misurabile), tenere sempre un’alternativa via e-mail, e sapere che i redirect OAuth si rompono dentro le WebView incorporate – una causa reale di iscrizioni mobili fallite. Due fatti specifici di un provider pesano abbastanza da essere nominati: Sign in with Apple emette indirizzi di relay privato (…@privaterelay.appleid.com), quindi il collegamento basato su e-mail e le liste di distribuzione devono aspettarsi alias opachi – e le regole dell’App Store impongono alle app che offrono un accesso di terze parti di offrire anche un’opzione di accesso rispettosa della privacy.

Collegamento degli account e la trappola dell’e-mail

La stessa persona arriverà da due provider, e entrambi dichiareranno [email protected]. La regola che evita la vulnerabilità classica: l’identità si ancora all’identificatore sub stabile del provider, mai alla sola e-mail. Le e-mail cambiano, vengono riciclate e – ecco il bordo tagliente – non sono sempre verificate: una classe di vulnerabilità emersa nel 2023 ha mostrato che le app che si fidavano di un claim e-mail non verificato nei token di un grande provider erano esposte al furto dell’account da parte di chiunque potesse impostare quella e-mail sul proprio account provider. Conviene collegare automaticamente solo su e-mail che il provider attesta come verificate; altrimenti si chiede all’utente di collegare in modo esplicito. E va previsto anche l’uscita: chi resta bloccato fuori da un provider (succede senza preavviso) perde ogni app a valle, a meno che non gli sia stato offerto un secondo metodo collegato – ed è per questo che “un solo metodo di accesso per utente” è una fabbrica di ticket di supporto travestita da semplicità.

Casi d’uso tipici

  • Accesso alle app consumer – il login social canonico: meno attrito, MFA ereditata, nessun archivio di password da far violare.
  • Accesso ad API di terze parti – il caso OAuth originale: un’app di agenda che legge il calendario senza la password.
  • Autenticazione machine-to-machine – client credentials fra servizi, senza alcun utente in vista.
  • Identità multi-provider – un account, diversi metodi di accesso collegati, scollegamento e recupero per singolo utente.
  • Ponte verso l’SSO aziendale – lo stesso pattern OIDC puntato su un identity provider del personale invece che su uno social.

Conviene offrire il login social? Matrice decisionale

SituazioneOrientamento
App consumer, pubblico fortemente mobileSì – 2 o 3 provider + alternativa via e-mail
App iOS che offre un accesso di terze partiUn’opzione di accesso rispettosa della privacy è obbligatoria – prevedere le e-mail di relay
Prodotto B2B o aziendaleOIDC sì, ma verso l’SSO del personale, non verso il social
Dati regolamentati, ciclo di vita degli account rigidoPrudenza – il blocco presso il provider e la verifica d’identità chiedono risposte
MVP che ha bisogno di autenticazione questa settimanaSì, tramite un backend che avvolge i flussi
Utenti senza account presso i grandi providerPrima e-mail o passwordless; il social come opzione

Limiti e trade-off

  • Si ereditano le decisioni del provider. Schermate di consenso, durata delle sessioni, recupero degli account e deprecazioni arrivano secondo il suo calendario, non secondo il proprio.
  • Il rischio di concentrazione è reale. Un disservizio del provider o un account bloccato è un’interruzione dell’accesso; i metodi di riserva collegati sono la mitigazione, non un extra facoltativo.
  • La flessibilità di OAuth è la sua debolezza storica. Un framework con opzioni invita combinazioni insicure – 2.1 esiste perché flussi implicit, redirect con jolly e refresh token senza rotazione continuavano ad andare in produzione.
  • I flussi di redirect hanno bordi taglienti. state (CSRF), i redirect URI esatti (open redirect e furto del codice) e PKCE (intercettazione) sono ciascuno a un parametro dimenticato di distanza da un incidente.
  • I claim social sono un pavimento, non un profilo. Arrivano subject, e-mail, nome – gli attributi oltre quelli richiedono comunque un onboarding proprio, e i relay per la privacy fanno sì che anche l’e-mail possa essere un alias.

OAuth e login social su Back4app

Back4app è una piattaforma open-source di Backend as a Service (BaaS) che combina database gestito, API REST e GraphQL generate automaticamente, autenticazione, archiviazione di file e funzioni serverless con Cloud Code. I flussi qui sopra si ripiegano nelle schede di codice: il client ottiene nativamente i token del provider, li passa a logInWith, e gli adattatori di autenticazione di Back4app li verificano lato server presso il provider prima di creare o ritrovare lo User – le identità dei provider vivono in blocchi authData per singolo provider, indicizzati sul subject stabile, che è la regola di collegamento degli account imposta per costruzione. linkWith aggancia provider aggiuntivi (o una credenziale e-mail) allo stesso utente, rispondendo al problema del blocco in una sola chiamata, e il token di sessione che l’app riceve funziona poi su tutte le API REST, GraphQL e Live Query, con le ACL e i permessi a livello di classe a decidere che cosa possa toccare. La danza dei redirect, la verifica dei token e i casi limite del collegamento arrivano come comportamento di piattaforma – i provider si configurano nella dashboard e resta da spedire il pulsante.

Domande frequenti

Che cos'è OAuth 2.0, in parole semplici?

Uno standard che permette a un'app di ottenere un accesso limitato a un account su un altro servizio senza che la password le venga consegnata. Al posto delle credenziali, il servizio emette per l'app un token temporaneo e delimitato da scope – come la tessera di un albergo che apre la camera e la palestra ma non l'ufficio del direttore, e scade al check-out.

OAuth è autorizzazione o autenticazione?

Autorizzazione – lo dice il titolo stesso della specifica: la RFC 6749 si chiama "The OAuth 2.0 Authorization Framework". Risponde a "a che cosa può accedere questa app?", non a "chi è questo utente?". L'accesso costruito sopra OAuth è standardizzato da OpenID Connect, che aggiunge un ID token firmato con cui l'identità viene attestata all'app.

Qual è la differenza tra OAuth 2.0 e OpenID Connect?

OpenID Connect è un sottile strato di identità posato su OAuth 2.0: gli stessi flussi, più un ID token firmato (un JWT indirizzato all'app, con i claim issuer, subject, audience e nonce) e un endpoint userinfo. Ogni vero pulsante "Accedi con…" è OIDC o un equivalente proprietario del provider – OAuth da solo non definisce alcun modo di provare chi si è autenticato.

Quali sono i grant type di OAuth?

Authorization code con PKCE ogni volta che c'è di mezzo un utente; client credentials per il machine-to-machine; device authorization per televisori e CLI; refresh token per rinnovare l'accesso. I grant implicit e password sono legacy – entrambi rimossi in OAuth 2.1, e nessun progetto nuovo dovrebbe usarli.

Che cosa sono gli access token e i refresh token?

L'access token è la credenziale di breve durata che l'app presenta all'API: delimitata da scope, con scadenza, spesso un JWT. Il refresh token vive più a lungo e si scambia con nuovi access token senza chiedere di nuovo nulla all'utente; la pratica moderna lo ruota a ogni uso, così un token rubato muore al primo riutilizzo.

Che cos'è PKCE e perché è obbligatorio?

Proof Key for Code Exchange (si pronuncia "pixie"): l'app avvia il flusso con l'hash di un segreto e deve presentare l'originale quando riscatta l'authorization code, provando che chi riscatta è chi ha iniziato. Nato per le app mobili, incapaci di custodire un client secret, difende dall'intercettazione del codice – e la bozza di OAuth 2.1 lo richiede a quasi tutti i client.

Che cos'è il login social e come funziona?

È OIDC confezionato in un pulsante: l'app reindirizza all'endpoint di autorizzazione del provider; l'utente si autentica là – la password non tocca mai l'app – e acconsente; il provider reindirizza indietro con un codice monouso; l'app lo scambia con i token e legge il subject stabile dell'ID token per creare o ritrovare l'account locale.

Il login social è sicuro?

In generale sì: l'utente eredita l'autenticazione indurita e la MFA del provider invece di un'ennesima password riciclata. In cambio arrivano il rischio di concentrazione – un account provider bloccato o compromesso colpisce ogni app a valle – e la cura nell'implementazione: l'identità va ancorata al subject stabile del provider e a claim verificati, mai a un campo e-mail grezzo.

Termini correlati

Confronta con

Fonti di approfondimento

Pronto a costruire il tuo backend?

Avvia il tuo progetto su Back4app in pochi minuti: database, autenticazione, API e Cloud Code inclusi. Nessuna carta di credito richiesta.

Scritto e revisionato da Back4app Engineering, Back4app Engineering · Pubblicato il 2026-10-06