Quando ci si deve registrare su un sito web o su un’applicazione online la maggior parte degli utenti registra un nuovo account specificando nome utente e password. La password dovrà essere “unica” quindi non utilizzata per accedere ad altri servizi.
OAuth è un protocollo aperto nato nel 2006 che ambisce a sostituire i meccanismi di autenticazione tradizionali.
I pulsanti Accedi con Google, Microsoft, Facebook, Twitter, LinkedIn, GitHub che si trovano sempre più spesso sui siti web si basano proprio su OAuth. Un server autorizzativo (gestito da un soggetto terzo come appunto Google, Microsoft, Facebook e così via) fornisce un token di accesso al sito o all’applicazione web che lo richiede previa esplicita approvazione dell’utente.
Quando si fa clic su un pulsante per l’accesso con OAuth, il gestore del server autorizzativo (service provider) mostra l’elenco delle informazioni che sono state richieste dal client ovvero dal sito web sul quale l’utente desidera autenticarsi.
La schermata che apparirà risulterà diversa a seconda del gestore del server autorizzativo OAuth che si è scelto.
Nell’immagine sopra l’esempio di una richiesta di conferma visualizzata da Google, sotto quella esposta da Twitter.
Attraverso apposite API compatibili OAuth l’applicazione web di terze parti può quindi accedere a un insieme di dati e risorse personali dell’utente senza che questi debba mai condividere username e password.
Quando si fa clic su un pulsante Accedi con Google, Microsoft, Facebook, Twitter, LinkedIn, infatti, se l’utente fosse già loggato su Google, Microsoft, Facebook e così via verrà subito mostrata una schermata di approvazione simile a quelle presentate in precedenza. Diversamente, se l’utente non fosse loggato, questi dovrà prima autenticarsi sul service provider (Google, Microsoft, Facebook,…).
Dopo aver effettuato l’autenticazione sul service provider, in maniera totalmente indipendente rispetto all’applicazione web alla quale si vuole accedere senza procedere con una registrazione di tipo tradizionale, il server autorizzativo fornirà all’applicazione web di terze parti un token di accesso (access token) che può essere utilizzato per riconoscere l’utente e autenticarlo.
I principali service provider usano oggi OAuth 2.0 ovvero la più recente versione del protocollo approvata come standard a ottobre 2012.
Rispetto al predecessore OAuth 2.0 riduce di default la scadenza del token con la possibilità comunque di aumentarne la durata e implementa un mediatore tra client e server.
Il mediatore gestisce i token di accesso e può essere lo stesso soggetto che offre le risorse alla quali l’utente intende accedere.
Il permesso Authorization Code (Authorization Code grant) oggi utilizzato comunemente per accedere ai vari siti web con OAuth 2.0 prevede che il service provider assegni all’applicazione di terza parte un identificativo e un segreto (client ID e client secret) che verranno scambiati durante il processo di autorizzazione.
L’applicazione, al momento della registrazione presso il service provider, fornisce un nome e un redirect URI che sarà utilizzato dal server autorizzativo per informare circa l’avvenuta approvazione della richiesta da parte dell’utente.
Il funzionamento del protocollo OAuth è molto semplice: vista la sua natura aperta il flusso delle informazioni che vengono scambiate tra i vari soggetti è chiaro e ben definito così come lo è la procedura da assolvere per rinnovare i token.
Gli aspetti sui quali porre attenzione quando si usa OAuth
La comparsa dei pulsanti Accedi con Google, Microsoft, Facebook, Twitter, LinkedIn, GitHub su una pagina web lascia intendere che è possibile autenticarsi istantaneamente usando i service provider OAuth indicati.
Sono stati però posti in essere, nel corso del tempo, attacchi phishing che mirano a trarre inganno gli utenti e a far credere loro di trovarsi in una pagina di login del service provider quando in realtà si trovano su pagine allestite da criminali informatici.
Prima di cliccare su un pulsante Accedi con Google, Microsoft, Facebook, Twitter, LinkedIn, GitHub suggeriamo di effettuare a parte (ad esempio aprendo un’altra scheda del browser) il login sul service provider corrispondente (leggasi: effettuare prima l’accesso al proprio account Google, Microsoft, Facebook,…).
A questo punto, cliccando sul pulsante Accedi con Google, Microsoft, Facebook,… esposto dal sito di terza parte dovrebbe immediatamente comparire una schermata in cui viene mostrato il nome dell’account che si sta utilizzando e la lista dei permessi richiesti dall’applicazione web di terza parte.
Nella barra degli indirizzi dovranno comparire URL come https://accounts.google.com/
(per gli account Google), https://account.live.com/
(per gli account Microsoft), https://api.twitter.com/
(per Twitter) e così via.
La visualizzazione di domini non appartenenti al service provider scelto dovrebbe subito mettere in allerta: con ogni probabilità ci si trova dinanzi a un tentativo di attacco phishing. Se l’utente inserisse username e password per l’accesso al proprio account questi verranno girati subiti nelle mani dei criminali informatici.
Per maggiore sicurezza suggeriamo di collegarvi con la pagina delle impostazioni dell’account del service provider e attivare l’autenticazione a due fattori. Molti service provider consentono installare sui propri smartphone app come Microsoft Authenticator e Google Authenticator.
Esse consentono di generare OTP (one-time-password) a scadenza breve sullo smartphone da usare per confermare l’accesso e superare l’autenticazione a due fattori. Una misura in più che permette di impedire l’accesso al contenuto dei propri account da parte di coloro che venissero in qualche modo a conoscere username e password corretti per l’accesso.
Dopo aver effettuato il login con OAuth è sempre bene verificare periodicamente a quali applicazioni si è concesso l’accesso ai contenuti del proprio account (limitatamente ai permessi richiesti).
Nel caso di Google è possibile farlo da questa pagina, per gli account Microsoft da qui, per Twitter da questa pagina cliccando su App collegate e così via.