Come funziona l'autorizzazione dell'utente

Se non hai familiarità con i Servizi di identità Google o con l'autorizzazione, inizia leggendo la panoramica.

Google offre una libreria JavaScript che include funzionalità di autorizzazione per aiutarti a gestire gli ambiti, ottenere il consenso dell'utente e semplificare l'utilizzo dei flussi OAuth 2.0 standard. La tua applicazione web, in esecuzione nel browser dell'utente, utilizza questa libreria per gestire il flusso implicito OAuth 2.0 o per avviare il flusso del codice di autorizzazione che termina sulla tua piattaforma di backend.

Ambiti solo di autenticazione

Diversi ambiti vengono utilizzati solo per l'autenticazione dell'utente: email, profile e openid. Se la tua app utilizza solo questi ambiti, valuta se un token ID JWT e Accedi con Google per la registrazione e l'accesso degli utenti soddisfano le tue esigenze. Nella maggior parte dei casi, questo è il metodo più semplice disponibile per l'autenticazione degli utenti.

Termini e concetti chiave

Queste guide presuppongono che tu abbia una conoscenza di base dei concetti di OAuth 2.0 e degli standard IETF come RFC6749. I seguenti termini vengono utilizzati in tutte le guide all'autorizzazione:

  • Il token di accesso è una credenziale per utente di breve durata rilasciata da Google che viene utilizzata per chiamare in modo sicuro le API di Google e accedere ai dati utente.
  • Il codice di autorizzazione è un codice temporaneo rilasciato da Google per identificare in modo sicuro i singoli utenti che accedono al proprio Account Google da un browser. La tua piattaforma di backend scambia questo codice con token di accesso e di aggiornamento.
  • Il token di aggiornamento è una credenziale per utente di lunga durata rilasciata da Google che viene archiviata in modo sicuro sulla tua piattaforma e può essere utilizzata per ottenere un nuovo token di accesso valido anche quando l'utente non è presente.
  • L'ambito limita i token a una quantità definita e limitata di dati utente. Per saperne di più, consulta Ambiti OAuth 2.0 per le API di Google.
  • La modalità popup è un flusso del codice di autorizzazione basato su un callback JavaScript in esecuzione nel browser dell'utente. Google richiama il gestore callback, che è responsabile dell'invio del codice di autorizzazione alla tua piattaforma. La modalità di esecuzione dipende da te.
  • La modalità di reindirizzamento è un flusso del codice di autorizzazione basato sui reindirizzamenti HTTP. Lo user agent viene prima reindirizzato a Google, un secondo reindirizzamento da Google all'endpoint del codice di autorizzazione della tua piattaforma include il codice.

Le durate dei token sono impostate da Google, in qualità di emittente. A causa di vari fattori, la durata esatta può variare.

Flussi OAuth 2.0

Vengono discussi due flussi: implicito e codice di autorizzazione. Entrambi restituiscono un token di accesso adatto all'uso con le API di Google.

Il flusso del codice di autorizzazione è consigliato perché offre una maggiore sicurezza per gli utenti. Questo flusso restituisce anche un token di aggiornamento che può essere utilizzato per ottenere token di accesso senza la presenza dell'utente, consentendo alla tua piattaforma di eseguire azioni asincrone, ad esempio l'invio di un promemoria via SMS di una riunione imminente pianificata all'ultimo minuto. Scegliere un modello di autorizzazione spiega in modo più dettagliato le differenze tra i due flussi.

La libreria JavaScript dei Servizi di identità Google segue lo standard OAuth 2.0 per:

  • gestire il flusso implicito per consentire alla tua app web nel browser di ottenere rapidamente da Google un token di accesso necessario per chiamare le API di Google.
  • avviare il flusso del codice di autorizzazione dal browser dell'utente.

Passaggi comuni

Sia il flusso implicito sia il flusso del codice di autorizzazione iniziano allo stesso modo:

  1. La tua app richiede l'accesso a uno o più ambiti.
  2. Google mostra una finestra di dialogo per il consenso all'utente e, se necessario, esegue l'accesso al suo Account Google.
  3. L'utente approva singolarmente ogni ambito richiesto.

Ogni flusso termina con passaggi diversi.

Quando si utilizza il flusso implicito

  • Google utilizza un gestore callback per notificare alla tua app l'esito del consenso e restituire un token di accesso per gli ambiti approvati.

Quando si utilizza il flusso del codice di autorizzazione

  • Google risponde con un codice di autorizzazione per utente:
    • In modalità di reindirizzamento, il codice viene restituito all'endpoint del codice di autorizzazione della tua piattaforma.
    • In modalità finestra di dialogo, il codice viene restituito al gestore di callback dell'app nel browser, senza che gli utenti debbano uscire dal tuo sito web.
  • A partire da Passaggio 4: Gestire la risposta del server OAuth 2.0, la tua piattaforma di backend completa uno scambio da server a server con Google, che alla fine restituisce alla tua piattaforma un token di aggiornamento e un token di accesso per utente.

Prima di ottenere un token di accesso, i singoli utenti devono concedere il consenso alla tua app per accedere agli ambiti richiesti. A questo scopo, Google mostra una finestra di dialogo per il consenso durante il passaggio 2 e registra il risultato all'indirizzo myaccount.google.com/permissions.

All'utente vengono visualizzati il nome dell'app, il logo, le norme sulla privacy, i Termini di servizio e gli ambiti richiesti, insieme all'opzione per approvare o annullare la richiesta.

Nella Figura 1 viene mostrata la finestra di dialogo per il consenso per un singolo ambito. Quando viene richiesto un singolo ambito, non sono necessarie caselle di controllo per approvare o negare un ambito.

Viene visualizzata la finestra di dialogo per il consenso dell'utente con i pulsanti Annulla o Continua e un singolo ambito, senza
caselle di controllo.

Figura 1: finestra di dialogo per il consenso dell'utente con un singolo ambito.

Nella Figura 2 viene mostrata la finestra di dialogo per il consenso per più ambiti. Quando vengono richiesti più ambiti, sono necessarie singole caselle di controllo per consentire all'utente di approvare o negare ogni ambito.

Finestra di dialogo per il consenso dell'utente con pulsanti Annulla o Continua e più ambiti, ognuno
con una casella di controllo
selettore.

Figura 2: finestra di dialogo per il consenso dell'utente con più ambiti.

Account utente

Per registrare il consenso e rilasciare un token di accesso è necessario un Account Google. Prima di ciò, i singoli utenti devono aver eseguito l'autenticazione su Google accedendo a un Account Google.

Sebbene non sia un requisito, è consigliabile utilizzare Accedi con Google per la registrazione e l'accesso alla tua app web o alla piattaforma di backend. In questo modo si riduce l'attrito degli utenti riducendo al minimo il numero di passaggi richiesti e, facoltativamente, puoi associare i token di accesso a singoli account sulla tua piattaforma.

Ad esempio, l'utilizzo di Accedi con Google stabilisce una sessione di Account Google attiva, evitando così di dover chiedere all'utente di accedere a un Account Google quando effettua una richiesta di autorizzazione. Se scegli di autenticare gli utenti nella tua app con altri mezzi, ad esempio nome utente e password o altri provider di identità, sarà comunque necessario che accedano prima a un Account Google per il consenso.

L'aggiunta di un suggerimento di accesso durante l'inizializzazione dell'autorizzazione, in genere l' indirizzo email dell'Account Google dell'utente, consente a Google di saltare la visualizzazione di un selettore di account, risparmiando un passaggio agli utenti. La credenziale del token ID restituita da Accedi con Google contiene l'indirizzo email dell'utente.

Le app web in esecuzione solo nel browser possono fare affidamento esclusivamente su Google per l'autenticazione degli utenti, scegliendo di non implementare un sistema di gestione degli account utente. In questo scenario, noto come flusso implicito, non è necessario associare un token di aggiornamento a un account utente e gestire l'archiviazione sicura.

In alternativa, il flusso del codice di autorizzazione richiede un sistema di account utente. I token di aggiornamento per utente devono essere associati a un singolo account sulla tua piattaforma di backend e archiviati per un utilizzo successivo. La modalità di implementazione, utilizzo e gestione di un sistema di account utente è specifica per la tua piattaforma e non viene discussa in modo più dettagliato.

Gli utenti possono visualizzare o revocare il consenso in qualsiasi momento dalle impostazioni del proprio Account Google.

Facoltativamente, la tua app web o piattaforma può chiamare google.accounts.oauth2.revoke per revocare i token e rimuovere il consenso dell'utente, utile quando un utente elimina il proprio account dalla tua piattaforma.

Altre opzioni di autorizzazione

In alternativa, i browser possono ottenere token di accesso utilizzando il flusso implicito chiamando direttamente gli endpoint OAuth 2.0 di Google, come descritto in OAuth 2.0 per applicazioni web lato client.

Allo stesso modo, per il flusso del codice di autorizzazione puoi scegliere di implementare i tuoi metodi e seguire i passaggi descritti in Utilizzare OAuth 2.0 per applicazioni server web.

In entrambi i casi, ti consigliamo vivamente di utilizzare la libreria dei Servizi di identità Google per ridurre i tempi e l'impegno di sviluppo e per ridurre al minimo i rischi per la sicurezza, come quelli descritti in OAuth 2.0 Security Best Current Practice.