Come funziona l'autorizzazione degli utenti

Se non hai familiarità con il servizio o l'autorizzazione Google Identity, leggi la panoramica.

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

Ambiti solo 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 l'opzione Accedi con Google per la registrazione e l'accesso degli utenti soddisfano le tue esigenze. Nella maggior parte dei casi, si tratta del metodo più semplice e diretto disponibile per l'autenticazione degli utenti.

Termini e concetti chiave

Queste guide presuppongono una conoscenza di base dei concetti di OAuth 2.0 e degli standard IETF, ad esempio RFC6749. I seguenti termini vengono utilizzati nelle guide alle autorizzazioni:

  • Il token di accesso è una credenziale per utente di breve durata emessa da Google, utilizzata per chiamare in modo sicuro le API di Google e accedere ai dati utente.
  • Il codice di autorizzazione è un codice temporaneo emesso da Google per identificare in modo sicuro i singoli utenti che accedono al loro Account Google da un browser. La tua piattaforma di backend scambia questo codice con i token di accesso e di aggiornamento.
  • Un token di aggiornamento è una credenziale di lunga durata per utente emessa da Google, archiviata in modo sicuro sulla tua piattaforma e che può essere utilizzata per ottenere un nuovo token di accesso valido anche quando l'utente non è presente.
  • L'opzione Ambito limita i token a una quantità definita e limitata di dati utente, vedi Ambiti OAuth 2.0 per le API di Google per ulteriori informazioni.
  • La modalità popup è un flusso di codice di autorizzazione basato su un callback di JavaScript in esecuzione nel browser dell'utente. Google richiama il tuo gestore di callback, che è quindi responsabile di inviare il codice di autenticazione alla tua piattaforma. La decisione 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, mentre un secondo reindirizzamento da Google all'endpoint del codice di autorizzazione della tua piattaforma include il codice.

La durata del token è impostata da Google come emittente. A causa di vari fattori, la durata esatta può variare.

Flussi OAuth 2.0

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

Si consiglia di seguire il flusso del codice di autorizzazione perché migliora la sicurezza dell'utente. Questo flusso restituisce anche un token di aggiornamento che può essere utilizzato per ottenere token di accesso senza che l'utente sia presente, consentendo alla tua piattaforma di eseguire più facilmente azioni asincrone, ad esempio l'invio di un promemoria via SMS di una riunione imminente pianificata all'ultimo minuto. Un modello di autorizzazione spiega le differenze tra i due flussi in modo più dettagliato.

La libreria JavaScript di Google Identity Services segue lo standard OAuth 2.0 per:

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

Passaggi comuni

Il flusso del codice di autorizzazione e implicito inizia allo stesso modo:

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

Poi ogni flusso termina con passaggi diversi.

Quando utilizzi il flusso implicito

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

Quando utilizzi il flusso del codice di autenticazione

  • 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à popup, il codice viene restituito al gestore di callback dell'app nel browser, senza che gli utenti debbano uscire dal sito web.
  • A partire dal Passaggio 4: gestisci la risposta del server OAuth 2.0, la tua piattaforma di backend completa uno scambio server-server con Google, ottenendo come risultato un token di aggiornamento per utente e un token di accesso che vengono restituiti alla piattaforma.

Prima di ottenere un token di accesso, i singoli utenti devono concedere alla tua app il consenso per accedere agli ambiti richiesti. Per farlo, Google mostra una finestra di dialogo per il consenso durante il passaggio 2 precedente e registra il risultato nella pagina myaccount.google.com/permissions.

Il nome dell'app, il logo, le norme sulla privacy, i termini di servizio e gli ambiti richiesti vengono mostrati all'utente, 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 rifiutare un ambito.

Finestra di dialogo per il consenso dell'utente con pulsanti Annulla o Continua e un singolo ambito, non vengono visualizzate 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 rifiutare ciascun ambito.

Finestra di dialogo per il consenso dell'utente con pulsanti Annulla o Continua e più ambiti, ciascuno con un selettore di caselle di controllo.

Figura 2:la finestra di dialogo per il consenso degli utenti con più ambiti.

Account utente

È necessario un Account Google per registrare il consenso e per emettere un token di accesso. Prima di questa data, i singoli utenti devono autenticarsi su Google accedendo a un Account Google.

Sebbene non sia un requisito, è consigliabile utilizzare la funzionalità Accedi con Google per la registrazione e l'accesso alla tua app web o piattaforma di backend. Questo riduce le difficoltà degli utenti riducendo al minimo il numero di passaggi richiesti e, facoltativamente, consente di associare facilmente i token di accesso ai singoli account sulla tua piattaforma.

Ad esempio, l'utilizzo di Accedi con Google stabilisce una sessione dell'Account Google attiva, evitando così la necessità di richiedere in un secondo momento 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à, dovranno comunque accedere 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 del selettore di account, risparmiando agli utenti un passaggio. La credenziale del token ID restituita da Accedi con Google contiene l'indirizzo email dell'utente.

Le app web eseguite solo nel browser possono basarsi 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 protetta.

In alternativa, un sistema di account utente è richiesto dal flusso del codice di autorizzazione. I token di aggiornamento per utente devono essere associati a un account individuale sulla tua piattaforma di backend e archiviati per un uso futuro. L'implementazione, la gestione e la gestione di un sistema di account utente sono specifiche per la tua piattaforma e non sono illustrate in modo più dettagliato.

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

Facoltativamente, la tua app o piattaforma web 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 da OAuth 2.0 per le applicazioni web lato client.

Analogamente, 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 Google Identity per ridurre i tempi e gli sforzi di sviluppo e per ridurre al minimo i rischi per la sicurezza come descritto nelle best practice correnti per la sicurezza di OAuth 2.0.