Autenticare gli utenti con identità esterne
Questa guida rapida mostra come proteggere un'app utilizzando Identity-Aware Proxy (IAP) e le 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:
-
Project Creator (
roles/resourcemanager.projectCreator) -
Amministratore App Engine(
roles/appengine.appAdmin) -
Visualizzatore Firebase Authentication (
roles/firebaseauth.viewer) -
IAP Policy Admin (
roles/iap.admin) -
Compute Viewer (
roles/compute.viewer) -
Identity Platform Admin (
roles/identityplatform.admin)
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.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Verify that billing is enabled for your Google Cloud project.
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Inizializza App Engine per il tuo progetto:
gcloud app create --project=project-id
Installa una versione attuale di Node.js.
Installa lo strumento a riga di comando Firebase:
npm install -g firebase-tools
Abilita le API
Innanzitutto, abilita Identity Platform:
Vai alla pagina Identity Platform Marketplace nella consoleGoogle Cloud .
Fai clic su Abilita Identity Platform. Viene visualizzata la pagina Identity Platform nella console Google Cloud .
Quindi, attiva IAP:
Vai alla pagina IAP nella console Google Cloud .
Seleziona lo stesso progetto che hai utilizzato per Identity Platform. L'utilizzo di progetti diversi non è supportato.
Fai clic su Abilita API.
Scarica ed esegui il deployment del codice campione
Il codice di questa guida rapida è composto da 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 mostra il JWT.
Per prima cosa, scarica il codice ed esegui il deployment dell'app client:
Scarica il codice di esempio:
git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
Passa alla directory dell'app client:
cd iap-gcip-web-toolkit/sample/appInstalla le dipendenze:
npm installEsegui il deployment dell'app client in App Engine:
npm run deployL'app client viene avviata all'URL:
https://[PROJECT-ID].appspot.com
Successivamente, esegui il deployment dell'app di autenticazione:
Passa alla directory dell'app di autenticazione:
cd ../authui-firebaseuiInstalla le dipendenze:
npm install export NODE_OPTIONS=--openssl-legacy-providerConfigura l'app di autenticazione in modo da utilizzare Firebase Hosting. Specifica l'ID progetto del progetto che contiene l'app client protetta da IAP: Google CloudGoogle Cloud
firebase use project-id
Esegui il deployment dell'app:
npm run deployL'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, devi disporre di un ID app e di un secret dell'app.
Accedi a Meta for Developers. Se non hai ancora un account Facebook, dovrai crearne uno.
Vai alla pagina Le mie app di Facebook.
Fai clic su Crea app.
Nel menu a sinistra, seleziona Impostazioni > Di base.
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.
Prendi nota dell'ID app e del secret dell'app. Ti serviranno nella sezione successiva.
Aggiungere Facebook come provider di identità
Configura Identity Platform per utilizzare Facebook per l'autenticazione:
Vai alla pagina Provider di identità nella console Google Cloud .
Fai clic su Aggiungi un provider.
Seleziona Facebook dall'elenco dei fornitori.
Inserisci l'ID app e il segreto dell'app ottenuti nella sezione precedente.
Fai clic su Salva.
Configurare 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.
Torna alla pagina Le mie app di Facebook e seleziona la tua app.
Nel menu a sinistra, fai clic su Prodotti > Aggiungi prodotto.
Individua il prodotto Login con Facebook e fai clic su Configura.
Nel menu di navigazione a sinistra, seleziona Impostazioni (non devi completare il flusso di avvio rapido guidato).
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 Identity Platform.
Fai clic su Salva modifiche.
Hai completato la configurazione di Identity Platform. Ora puoi configurare IAP per utilizzarlo per l'autenticazione.
Abilita IAP per utilizzare le identità esterne
Vai alla pagina IAP nella console Google Cloud .
Fai clic sulla scheda APPLICAZIONI.
Seleziona l'app App Engine di esempio di cui hai eseguito il deployment in precedenza. L'URL nella categoria Pubblicata dovrebbe essere simile a:
https://project-id.appspot.com
Nella colonna IAP, sposta l'opzione su On.
Nel riquadro laterale, fai clic su Avvia per Utilizza identità esterne per l'autorizzazione.
Nella sezione Pagina di accesso, seleziona Fornirò il mio URL.
Nel campo URL di autenticazione, inserisci l'URL dell'app di autenticazione. Dovrebbe avere un aspetto simile a questo:
https://project-id.firebaseapp.com/
Dopo aver inserito l'URL, la console Google Cloud aggiunge automaticamente la chiave API.
Seleziona la casella con il nome del progetto. Deve avere Facebook elencato come provider di identità.
Fai clic su Salva.
Hai terminato la configurazione di IAP.
Testare l'autenticazione utente
Per verificare che IAP protegga la tua app e autentichi gli utenti con Facebook:
Vai all'app client App Engine nel browser:
https://project-id.appspot.com
Dopo una breve schermata di caricamento, viene eseguito il reindirizzamento alla pagina di accesso di Identity Platform.
Segui le istruzioni sullo schermo per l'autenticazione con Facebook.
Dovresti essere reindirizzato all'app client, che mostrerà il JWT restituito da Identity Platform.
Per disconnetterti completamente, devi uscire dall'app di esempio che hai creato e da Facebook. Devi uscire da entrambe le app perché Firebase stabilisce una sessione con Facebook valida per un'ora. Per ulteriori informazioni, vedi Gestire le sessioni utente.
Complimenti! Hai eseguito il deployment di un'app su App Engine e l'hai protetta con IAP e identità esterne.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Inoltre, potresti voler eliminare l'app Facebook che hai creato.
Passaggi successivi
- Personalizza la tua UI di autenticazione con FirebaseUI o crea una UI personalizzata da zero.
- Scopri di più sulla configurazione dei provider di identità con Identity Platform.
- Scopri come creare silos univoci di utenti e configurazioni con la multitenancy di Identity Platform.