Come condividere i client OAuth

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina spiega come condividere un client OAuth con un'altra app all'interno della tua organizzazione.

Panoramica

La condivisione di client OAuth tra progetti elimina la necessità di creare manualmente un nuovo client OAuth per ogni app all'interno della tua organizzazione. Dopo aver creato manualmente un client OAuth, puoi assegnarlo in modo programmatico a più app.

La condivisione dei client OAuth viene utilizzata anche per condividere un client OAuth predefinito con gli agenti che vuoi attivare Identity-Aware Proxy (IAP), ma che non possono accedere alla pagina Credenziali.

Tieni presente che le app per dispositivi mobili non possono eseguire l'autenticazione con i client OAuth di un altro progetto.

Prima di iniziare

Segui una delle guide indicate di seguito per attivare IAP per un'app e creare un client OAuth.

Tieni presente che la condivisione con il client con App Engine non è al momento supportata.

Assegnazione di un client condiviso ai servizi di backend

  1. Vai alla pagina Gruppi di istanze per assicurarti che le istanze si trovino in un gruppo di istanze.
  2. Definire i servizi di backend.
  3. Configura il bilanciamento del carico.
  4. Utilizzando lo strumento a riga di comando gcloud, esegui gcloud auth login.
  5. Segui l'URL che appare per accedere.
  6. Dopo aver effettuato l'accesso, copia il codice di verifica visualizzato e incollalo nella riga di comando.
  7. Esegui gcloud config set project PROJECT_ID per il progetto per il quale vuoi abilitare IAP.
  8. Per abilitare IAP, utilizza l'ID e il secret del client condiviso dalla pagina Credenziali ed esegui il seguente comando:

    gcloud compute backend-services update BACKEND_SERVICE_NAME  \
       --global --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

Assegnazione di un client condiviso alle app GKE

Segui i passaggi per configurare il file BackendConfig della tua app. Utilizza l'ID e il secret del client condiviso quando esegui il comando seguente:

kubectl create secret generic my-secret --from-literal=client_id=CLIENT_ID \
    --from-literal=client_secret=CLIENT_SECRET

Rischi

La condivisione di un client tra le tue app è pratica, ma comporta dei rischi. Questa sezione illustra i potenziali rischi per la condivisione dei clienti e come mitigarli.

Singolo punto di errore

L'utilizzo di un client OAuth per molte app crea un single point of failure. Se un client viene eliminato o modificato in modo errato, tutte le app che utilizzano quel client saranno interessate.

Per attenuare questa situazione, condividi i client solo quando soddisfano un caso d'uso importante per i clienti condivisi.

Divulgazione di client secret

La condivisione di un client richiede la condivisione del tuo client secret con persone e script. Questo aumenta il rischio di fuga dei client secret. IAP non può fare distinzione tra token creati dalla tua app e token creati da un client secret divulgato.

L'accesso alle risorse IAP può essere monitorato con Cloud Audit Logging. Se ritieni che ci sia la possibilità che il tuo client secret sia trapelato, reimpostalo dalla pagina Credenziali.

Per ridurre questo rischio, proteggi i client secret come una password. Limitarli e non archiviarli mai come testo non crittografato.

Furto d'identità di utenti autorizzati

Se il tuo client secret è divulgato, un'app dannosa può impostare il cookie del browser di autenticazione IAP nel proprio dominio per impersonare un utente autorizzato. Con questo cookie, IAP autentica l'utente rappresentato per tutte le app che condividono il client secret trapelato.

Per ridurre questo rischio, evita di condividere i client tra le risorse che condividono anche gli utenti autorizzati. Imposta le autorizzazioni per risorsa per assicurarti che, anche se un utente rappresentato sia autenticato, IAP non autorizzerà l'accesso.

Raccolta delle identità utente

Se il tuo client secret è divulgato, un'app dannosa può utilizzare il tuo ID client per raccogliere le identità degli utenti della tua app. e viene attivato quando gli utenti visitano l'app dannosa.

Quando un utente accede a un'app protetta da IAP per la prima volta, gli viene chiesto di condividere la propria identità con l'app. In questo modo gli utenti hanno il controllo delle proprie informazioni personali. Quando un utente acconsente alla condivisione della propria identità, il sistema di accesso di Google registra tale consenso. IAP non chiederà di nuovo l'utente alle richieste successive da qualsiasi ID client nello stesso progetto.

Tutti gli utenti che hanno acconsentito a condividere la propria identità con la tua app e che visitano l'app dannosa riceveranno la loro identità immediatamente, senza il loro consenso.