Autenticare gli utenti con identità esterne

Questa guida rapida mostra come proteggere un'app utilizzando Identity-Aware Proxy (IAP) e identità esterne. Combinando IAP e Identity Platform, puoi autenticare gli utenti con un'ampia gamma di provider di identità, come OAuth, SAML e OIDC, oltre agli Account Google.

In questa guida rapida, proteggerai un'app App Engine di esempio utilizzando l'autenticazione di Facebook.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per completare questa guida rapida, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  1. Nella Google Cloud console, nella pagina di selezione del progetto, seleziona o crea un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico: puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l' resourcemanager.projects.create autorizzazione. Scopri come concedere i ruoli.

    Vai al selettore di progetti

  2. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  3. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

    gcloud init

    Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Inizializza App Engine per il tuo progetto:

    gcloud app create --project=project-id
    
  5. Installa Git.

  6. Installa una versione attuale di Node.js.

  7. Installa lo strumento a riga di comando Firebase:

    npm install -g firebase-tools
    

Abilita le API

Innanzitutto, abilita Identity Platform:

  1. Vai alla pagina Marketplace di Identity Platform nella Google Cloud console.

    Vai alla pagina Marketplace di Identity Platform

  2. Fai clic su Abilita Identity Platform. La pagina Identity Platform viene visualizzata nella Google Cloud console.

Poi, abilita IAP:

  1. Vai alla pagina IAP nella Google Cloud console.

    Vai alla pagina IAP

  2. Seleziona lo stesso progetto che hai utilizzato per Identity Platform. L'utilizzo di progetti diversi non è supportato.

  3. Fai clic su Abilita API.

Scarica ed esegui il deployment del codice campione

Il codice per questa guida rapida ha due componenti: un' app client e un' app di autenticazione.

L'app client è protetta da IAP. Quando riceve una richiesta da un utente non autenticato, questa viene reindirizzata all'app di autenticazione per verificare l'identità dell'utente. Se l'utente accede correttamente, l'app di autenticazione risponde con un token JWT (JSON Web Token). A scopo dimostrativo, l'app client visualizza il JWT.

Per prima cosa, scarica il codice ed esegui il deployment dell'app client:

  1. Scarica il codice campione:

    git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
    
  2. Passa alla directory dell'app client:

    cd iap-gcip-web-toolkit/sample/app
    
  3. Installa le dipendenze:

    npm install
    
  4. Esegui il deployment dell'app client su App Engine:

    npm run deploy
    

    L'app client viene avviata all'URL:

    https://[PROJECT-ID].appspot.com
    

Poi, esegui il deployment dell'app di autenticazione:

  1. Passa alla directory dell'app di autenticazione:

    cd ../authui-firebaseui
    
  2. Installa le dipendenze:

    npm install
    export NODE_OPTIONS=--openssl-legacy-provider
    
  3. Configura l'app di autenticazione in modo da utilizzare Firebase Hosting. Specifica l'ID del Google Cloudprogetto che contiene l'app client protetta da IAP: Google Cloud

    firebase use project-id
    
  4. Esegui il deployment dell'app:

    npm run deploy
    

    L'app di autenticazione viene avviata all'URL:

    https://[PROJECT-ID].firebaseapp.com
    

Hai eseguito il deployment delle app client e di autenticazione. Il passaggio successivo consiste nel configurare Identity Platform e IAP.

Configura Identity Platform

IAP utilizza Identity Platform per autenticare le identità esterne. Questa guida rapida utilizza Facebook come esempio, ma Identity Platform supporta un'ampia gamma di provider di identità.

Crea un'app Facebook

Per autenticare gli utenti con Facebook, hai bisogno di un ID app e di un client secret.

  1. Accedi a Meta for Developers. Se non hai ancora un account Facebook, dovrai crearne uno.

  2. Vai alla pagina Le mie app di Facebook.

  3. Fai clic su Crea app.

  4. Nel menu a sinistra, seleziona Impostazioni > Di base.

  5. Nella casella URL delle norme sulla privacy, inserisci un URL valido. Se in un secondo momento esegui il deployment dell'app in produzione, puoi aggiornare l'URL in modo che rimandi alle tue norme sulla privacy.

  6. Prendi nota dell'ID app e del client secret. Ti serviranno nella sezione successiva.

Aggiungi Facebook come provider di identità

Configura Identity Platform in modo da utilizzare Facebook per l'autenticazione:

  1. Vai alla pagina Provider di identità nella Google Cloud console.

    Vai alla pagina Provider di identità

  2. Fai clic su Aggiungi un provider.

  3. Seleziona Facebook dall'elenco dei provider.

  4. Inserisci l'ID app e il client secret che hai ottenuto nella sezione precedente.

  5. Fai clic su Salva.

Configura l'URI di reindirizzamento OAuth

Quando Facebook termina l'elaborazione di una richiesta dall'app di autenticazione, ha bisogno di un URI a cui reindirizzare.

  1. Torna alla pagina Le mie app di Facebook e seleziona la tua app.

  2. Nel menu a sinistra, fai clic su Prodotti > Aggiungi prodotto.

  3. Individua il prodotto Accesso a Facebook e fai clic su Configura.

  4. Nel menu di navigazione a sinistra, seleziona Impostazioni (non devi completare il flusso della guida rapida guidata).

  5. Nella casella URI di reindirizzamento OAuth validi, inserisci l'URI di reindirizzamento:

    https://project-id.firebaseapp.com/__/auth/handler
    

    Puoi trovare questo URI anche nella pagina di configurazione del provider di Identity Platform.

  6. Fai clic su Salva modifiche.

Hai terminato la configurazione di Identity Platform. Ora puoi configurare IAP in modo da utilizzarlo per l'autenticazione.

Abilita IAP per utilizzare le identità esterne

  1. Vai alla pagina IAP nella Google Cloud console.

    Vai alla pagina IAP

  2. Fai clic sulla scheda APPLICAZIONI.

  3. Seleziona l'app App Engine di esempio di cui hai eseguito il deployment in precedenza. L'URL nella categoria Pubblicato dovrebbe essere simile a:

    https://project-id.appspot.com
    
  4. Nella colonna IAP, attiva l'opzione On.

  5. Nel riquadro laterale, fai clic su Avvia per Utilizza identità esterne per l'autorizzazione.

  6. Sotto pagina di accesso, seleziona Fornirò il mio URL.

  7. Nel campo URL di autenticazione, inserisci l'URL dell'app di autenticazione. Dovrebbe essere simile a:

    https://project-id.firebaseapp.com/
    

    Dopo aver inserito l'URL, la Google Cloud console aggiunge automaticamente la chiave API.

  8. Seleziona la casella con il nome del tuo progetto. Dovrebbe essere elencato Facebook come provider di identità.

  9. Fai clic su Salva.

Hai terminato la configurazione di IAP.

Testa l'autenticazione dell'utente di test

Per verificare che IAP protegga la tua app e autentichi gli utenti con Facebook:

  1. Vai all'app App Engine client nel browser:

    https://project-id.appspot.com
    

    Dopo una breve schermata di caricamento, viene eseguito il reindirizzamento alla pagina di accesso di Identity Platform.

  2. Segui le istruzioni sullo schermo per eseguire l'autenticazione con Facebook.

  3. Dovresti essere reindirizzato all'app client, che visualizzerà il JWT restituito da Identity Platform.

Per disconnetterti completamente, devi disconnetterti dall'app di esempio che hai creato e da Facebook. Devi disconnetterti da entrambe le app perché Firebase stabilisce una sessione con Facebook valida per un'ora. Per ulteriori informazioni, consulta Gestire le sessioni utente.

Complimenti! Hai eseguito il deployment di un'app su App Engine e l'hai protetta con IAP e identità esterne.

Libera spazio

Per evitare che al tuo Google Cloud account vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

  1. Nella Google Cloud console, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminare il progetto.

Inoltre, potresti voler eliminare l'app Facebook che hai creato.

Passaggi successivi