Questa pagina illustra alcune best practice generali per l'integrazione con OAuth 2.0. Oltre alle indicazioni specifiche per il tuo tipo di applicazione e piattaforma di sviluppo, tieni presente queste best practice. Consulta anche i suggerimenti per preparare la tua app per la produzione e i criteri OAuth 2.0 di Google.
Gestire le credenziali 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 archivio sicuro, ad esempio utilizzando un gestore dei secret come Google Cloud Secret Manager. Non codificare le credenziali, non eseguirne il commit in un repository di codice e 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. Archivia i token in modo sicuro a riposo e non trasmetterli mai in testo normale. Utilizza un sistema di archiviazione sicuro adatto alla tua piattaforma, ad esempio Keystore su Android, Keychain Services su iOS e macOS o Credential Locker su Windows.
Revoca i token non appena non sono più necessari ed eliminali definitivamente dai tuoi sistemi.
Inoltre, prendi in considerazione anche queste best practice per la tua piattaforma:
- Per le applicazioni lato server che archiviano token per molti utenti, criptali a riposo e assicurati che l'archivio dati non sia accessibile pubblicamente a internet.
- Per le app native per computer, l'utilizzo del protocollo Proof Key for Code Exchange (PKCE) è vivamente consigliato per ottenere codici di autorizzazione che possono essere scambiati con 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 anche gestirne l'invalidazione o la scadenza. I token potrebbero essere invalidati per diversi motivi, ad esempio potrebbero essere scaduti o l'accesso delle tue app potrebbe essere stato revocato dall'utente o da un processo automatizzato. In questo caso, valuta attentamente come deve rispondere la tua applicazione, incluso il prompt per l'utente al successivo accesso o la pulizia dei dati. Per ricevere una notifica della revoca dei 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 alla tua applicazione.
Non devi richiedere l'accesso ai dati quando l'utente esegue l'autenticazione per la prima volta, 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:
- L'utente si autentica con la tua app
- Non vengono richiesti ambiti aggiuntivi. L'app fornisce funzionalità di base per consentire all'utente di esplorare e utilizzare funzionalità che non richiedono dati o accesso aggiuntivi.
- L'utente seleziona una funzionalità che richiede l'accesso a dati aggiuntivi
- La tua applicazione effettua 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.
- Se l'utente rifiuta la richiesta, l'app disattiva la funzionalità e fornisce all'utente un contesto aggiuntivo per richiedere nuovamente l'accesso.
Gestire il consenso per più ambiti
Quando richiedono più ambiti contemporaneamente, gli utenti potrebbero non concedere tutti gli ambiti OAuth che hai richiesto. La tua app deve gestire il rifiuto degli ambiti disattivando le funzionalità pertinenti.
Se la funzionalità di base dell'app richiede più ambiti, spiegalo all'utente prima di richiedere il consenso.
Puoi richiedere nuovamente l'autorizzazione all'utente solo dopo che ha indicato chiaramente l'intenzione di utilizzare la funzionalità specifica che richiede l'ambito. La tua app deve fornire all'utente un contesto e una giustificazione pertinenti prima di richiedere gli ambiti OAuth.
Devi ridurre al minimo il numero di ambiti richiesti dalla tua app contemporaneamente. In alternativa, utilizza l'autorizzazione incrementale per richiedere gli ambiti nel contesto delle funzionalità.
Utilizzare browser sicuri
Sul web, le richieste di autorizzazione OAuth 2.0 devono essere effettuate solo da browser web con tutte le funzionalità. Su altre piattaforme, assicurati di selezionare il tipo di client OAuth corretto e di integrare OAuth in modo appropriato per la tua piattaforma. Non reindirizzare la richiesta tramite ambienti di navigazione incorporati, incluse le 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 a livello di programmazione. Devi utilizzare la console Google Developers per accettare esplicitamente i Termini di servizio, configurare il client OAuth e prepararti per la verifica OAuth.
Per i workflow automatizzati, valuta la possibilità di utilizzare service account.
Rimuovi i client OAuth inutilizzati
Controlla regolarmente i client OAuth 2.0 ed elimina in modo proattivo quelli che non sono più richiesti dalla tua applicazione o che sono diventati obsoleti. Se lasci configurati client non utilizzati, corri un potenziale rischio per la sicurezza, in quanto il client può essere utilizzato in modo improprio se le tue credenziali vengono compromesse.
Per ridurre ulteriormente i rischi derivanti da client inutilizzati, i client OAuth 2.0 inattivi da sei mesi vengono eliminati automaticamente.
La best practice consigliata è di non attendere l'eliminazione automatica, ma di rimuovere in modo proattivo i client non utilizzati. Questa pratica riduce al minimo l'area esposta agli attacchi della tua applicazione e garantisce una buona igiene della sicurezza.