Best practice

Questa pagina illustra alcune best practice generali per l'integrazione con OAuth 2.0. Prendi in considerazione queste best practice oltre a eventuali indicazioni specifiche per il tuo tipo di applicazione e piattaforma di sviluppo. Consulta anche i consigli per preparare la tua app per la produzione e i criteri di OAuth 2.0 di Google.

Gestire le credenziali del client in modo sicuro

Le credenziali client OAuth identificano l'identità della tua app e devono essere gestite con attenzione. Archivia queste credenziali solo in un'area di archiviazione sicura, ad esempio utilizzando un gestore di secret come Google Cloud Secret Manager. Non codificare le credenziali, non eseguirne il commit in un repository di codice o non pubblicarle pubblicamente.

Gestire i token utente in modo sicuro

I token utente includono sia i token di aggiornamento sia i token di accesso utilizzati dalla tua applicazione. Memorizza in modo sicuro i token a riposo e non trasmetterli mai in testo normale. Utilizza un sistema di archiviazione sicuro appropriato per la tua piattaforma, ad esempio Keystore su Android, Keychain Services su iOS e macOS o Credential Locker su Windows.

Rimuovi i token non appena non sono più necessari ed eliminali definitivamente dai tuoi sistemi.

Inoltre, tieni presenti queste best practice per la tua piattaforma:

  • Per le applicazioni lato server che memorizzano token per molti utenti, criptali a riposo e assicurati che il tuo data store non sia pubblicamente accessibile a internet.
  • Per le app native per computer, è vivamente consigliato utilizzare il protocollo Proof Key for Code Exchange (PKCE) per ottenere codici di autorizzazione che possono essere scambiati per token di accesso.

Gestire la revoca e la scadenza del token di aggiornamento

Se la tua app ha richiesto un token di aggiornamento per l'accesso offline, devi gestire anche la relativa invalidità o scadenza. I token potrebbero essere invalidati per diversi motivi, ad esempio potrebbero essere scaduti o l'accesso alle tue app potrebbe essere stato revocato dall'utente o da una procedura automatica. In questo caso, valuta attentamente come deve rispondere la tua applicazione, ad esempio chiedendo all'utente di eseguire la pulizia dei dati al successivo accesso. Per ricevere una notifica della revoca del token, esegui l'integrazione con il servizio Protezione su più account.

Utilizzare l'autorizzazione incrementale

Utilizza l'autorizzazione incrementale per richiedere gli ambiti OAuth appropriati quando la funzionalità è necessaria per la tua applicazione.

Non dovresti richiedere l'accesso ai dati quando l'utente esegue la prima autenticazione, a meno che non sia essenziale per la funzionalità di base della tua app. Richiedi invece solo gli ambiti specifici necessari per un'attività, seguendo il principio di selezionare gli ambiti più piccoli e limitati possibili.

Richiedi sempre gli ambiti nel contesto per aiutare gli utenti a capire perché la tua app richiede l'accesso e come verranno utilizzati i dati.

Ad esempio, la tua applicazione potrebbe seguire questo modello:

  1. L'utente si autentica con la tua app
    1. Non vengono richiesti altri ambiti. L'app fornisce funzionalità di base per consentire all'utente di esplorare e utilizzare funzionalità che non richiedono dati o accessi aggiuntivi.
  2. L'utente seleziona una funzionalità che richiede l'accesso a dati aggiuntivi.
    1. La tua applicazione invia una richiesta di autorizzazione per questo ambito OAuth specifico richiesto per questa funzionalità. Se questa funzionalità richiede più ambiti, segui le best practice riportate di seguito.
    2. Se l'utente nega la richiesta, l'app disattiva la funzionalità e fornisce all'utente un contesto aggiuntivo per richiedere di nuovo l'accesso.

Gestire il consenso per più ambiti

Quando richiedi più ambiti contemporaneamente, gli utenti potrebbero non concedere tutti gli ambiti OAuth che hai richiesto. L'app deve gestire il rifiuto degli ambiti disattivando le funzionalità pertinenti.

Se la funzionalità di base della tua app richiede più ambiti, spiegalo all'utente prima di chiedergli il consenso.

Puoi chiedere di nuovo all'utente di confermare la sua intenzione di utilizzare la funzionalità specifica che richiede l'ambito solo dopo che ha indicato chiaramente la sua intenzione di utilizzare la funzionalità specifica che richiede l'ambito. L'app deve fornire all'utente un contesto e una motivazione pertinenti prima di richiedere gli ambiti OAuth.

Dovresti ridurre al minimo il numero di ambiti richiesti contemporaneamente dalla tua app. Al contrario, utilizza l'autorizzazione incrementale per richiedere ambiti nel contesto di funzionalità e funzionalità.

Utilizzare browser sicuri

Sul web, le richieste di autorizzazione OAuth 2.0 devono essere effettuate solo da browser web completi. Su altre piattaforme, assicurati di selezionare il tipo di client OAuth corretto e di integrare OAuth in base alle esigenze della tua piattaforma. Non reindirizzare la richiesta tramite ambienti di navigazione integrati, inclusi i webview su piattaforme mobile, come WebView su Android o WKWebView su iOS. Utilizza invece le librerie OAuth native o Accedi con Google per la tua piattaforma.

Creazione e configurazione manuale dei client OAuth

Per evitare abusi, i client OAuth non possono essere creati o modificati tramite programmazione. Devi utilizzare la Console per gli sviluppatori Google per accettare esplicitamente i Termini di servizio, configurare il tuo client OAuth e prepararti alla verifica OAuth.

Per i flussi di lavoro automatici, ti consigliamo di utilizzare service account.

Rimuovere i client OAuth inutilizzati

Controlla regolarmente i tuoi client OAuth 2.0 ed elimina in modo proattivo quelli non più richiesti dalla tua applicazione o che sono diventati obsoleti. Lasciare configurati i client inutilizzati rappresenta un potenziale rischio per la sicurezza, in quanto il client può essere utilizzato in modo improprio se le credenziali del client vengono compromesse.

Per ridurre ulteriormente i rischi derivanti dai client inutilizzati, i client OAuth 2.0 inattivi da sei mesi vengono eliminati automaticamente.

La best practice consigliata è non attendere l'eliminazione automatica, ma rimuovere in modo proattivo i client inutilizzati. Questa pratica riduce al minimo l'area di attacco dell'applicazione e garantisce una buona igiene di sicurezza.