Se non hai familiarità con i servizi di identità o l'autorizzazione di Google, consulta la Panoramica.
Google offre una libreria JavaScript che include funzionalità di autorizzazione per aiutarti a gestire gli ambiti, ottenere il consenso degli utenti 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 piattaforma di backend.
Ambiti solo autenticazione
Vengono utilizzati solo diversi ambiti per l'autenticazione 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 dell'utente soddisfano le tue esigenze. Nella maggior parte dei casi, questo è il metodo più semplice e diretto disponibile per l'autenticazione utente.
Termini e concetti principali
Queste guide presuppongono che tu abbia una conoscenza di base dei concetti di OAuth 2.0 e degli standard IETF come RFC6749. Nelle guide all'autorizzazione vengono utilizzati i seguenti termini:
- Il token di accesso è una credenziale di breve durata per utente emessa da Google, utilizzata per chiamare in modo sicuro le API Google e accedere ai dati dell'utente.
- Il codice di autorizzazione è un codice temporaneo emesso 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 per accedere ai token di aggiornamento e aggiornarli.
- Il token di aggiornamento è una credenziale a lunga durata per ogni utente emessa da Google, archiviata in modo sicuro sulla tua piattaforma, che 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, consulta la sezione 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 JavaScript in esecuzione nel browser dell'utente. Google richiama il tuo gestore di callback, che è responsabile di inviare il codice di autenticazione alla tua piattaforma, in modo che tu debba decidere come fare.
- La modalità di reindirizzamento è un flusso di 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.
La durata del token è impostata da Google come emittente. A causa di vari fattori, la durata esatta può variare.
Flussi OAuth 2.0
Sono illustrati due flussi, implicito e codice di autorizzazione. Entrambi restituiscono un token di accesso adatto per l'utilizzo con le API di Google.
Si consiglia di utilizzare il flusso del codice di autorizzazione perché migliora la sicurezza degli utenti. Questo flusso restituisce anche un token di aggiornamento, che può essere usato 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 SMS di una riunione imminente pianificata all'ultimo minuto. Scegliere 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 all'applicazione web nel browser di ottenere rapidamente e facilmente un token di accesso da Google, necessario per chiamare le API di Google.
- Avvia il flusso del codice di autorizzazione dal browser dell'utente.
Passaggi comuni
Sia il flusso di codice implicito sia quello di autorizzazione iniziano allo stesso modo:
- La tua app richiede l'accesso a uno o più ambiti.
- Google mostra una finestra di dialogo per il consenso all'utente e, se necessario, lo consente di accedere all'account.
- L'utente approva singolarmente ciascun ambito richiesto.
Ogni flusso termina quindi con passaggi diversi.
Quando utilizzi il flusso implicito
- Google utilizza un gestore di callback per informare l'app dell'esito del consenso e restituire un token di accesso per tutti gli ambiti approvati.
Quando utilizzi 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à popup, il codice viene restituito al gestore di callback dell'app nel browser, senza che gli utenti debbano uscire dal tuo sito web.
- A partire dal Passaggio 4: gestisci la risposta del server OAuth 2.0, la piattaforma di backend completa uno scambio server-server con Google, generando un token di aggiornamento per utente e un token di accesso che vengono tornati sulla tua piattaforma.
Consenso utente
Prima di ottenere un token di accesso, i singoli utenti devono concedere alla tua app il consenso per accedere agli ambiti richiesti. A tale scopo, Google mostra una finestra di dialogo per il consenso durante il passaggio 2 sopra 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 visualizzati all'utente insieme all'opzione per approvare o annullare la richiesta.
Nella figura 1 viene visualizzata la finestra di dialogo per il consenso per un singolo ambito. Quando è richiesto un singolo ambito, non sono necessarie caselle di controllo per approvare o rifiutare un ambito.
Figura 1: finestra di dialogo per il consenso degli utenti con un unico ambito.
Nella Figura 2, viene mostrata la finestra di dialogo per il consenso per più ambiti. Quando sono richiesti più ambiti, sono necessarie singole caselle di controllo per consentire all'utente di approvare o rifiutare ogni ambito.
Figura 2. Finestra di dialogo per il consenso degli utenti con più ambiti.
Account utente
Per registrare il consenso e inviare un token di accesso, è necessario un Account Google. Prima che questo avvenga, i singoli utenti devono autenticarsi a Google accedendo a un Account Google.
Anche se non è obbligatorio, ti consigliamo di usare la funzionalità Accedi con Google per la registrazione e l'accesso alla tua app web o alla tua piattaforma di backend. In questo modo, riduci al minimo l'attrito degli utenti riducendo al minimo il numero di passaggi richiesti e facoltativamente puoi associare facilmente i token di accesso ai singoli account sulla tua piattaforma.
Ad esempio, l'utilizzo di Accedi con Google stabilisce una sessione attiva dell'Account Google, evitando così la necessità di chiedere in un secondo momento di accedere all'Account Google quando si 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 prima a un Account Google per il consenso.
L'aggiunta di un suggerimento durante l'inizializzazione dell'autorizzazione (in genere l'indirizzo email dell'Account Google dell'utente) consente a Google di ignorare la visualizzazione del selettore account, salvando un passaggio. La credenziale Token ID restituita da Accedi con Google contiene l'indirizzo email dell'utente.
Le app web eseguite 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 essere utilizzati in un secondo momento. Come implementare, gestire e gestire un sistema di account utente è univoco per la piattaforma in uso e non è discusso più in dettaglio.
Visualizzazione e revoca del consenso
Gli utenti possono visualizzare o revocare il consenso in qualsiasi momento dalle impostazioni del proprio Account Google.
Facoltativamente, la tua app web o la tua piattaforma possono 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 i token di accesso utilizzando il flusso implicito chiamando direttamente gli endpoint OAuth 2.0 di Google, come descritto in OAuth 2.0 per le applicazioni web lato client.
Allo stesso modo, per il flusso del codice di autorizzazione potresti scegliere di implementare metodi personalizzati e seguire la procedura descritta in Utilizzare OAuth 2.0 per le applicazioni server web.
In entrambi i casi consigliamo vivamente di utilizzare la libreria Servizi di identità Google per ridurre i tempi e lo sforzo per lo sviluppo e per ridurre al minimo i rischi per la sicurezza, come quelli descritti Best practice correnti per la sicurezza di OAuth 2.0.