Autentica 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 progetto:
- Project Creator (
roles/resourcemanager.projectCreator) - App Engine Admin(
roles/appengine.appAdmin) - Firebase Authentication Viewer (
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.
Nella console Google Cloud , nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud .
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 per 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'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initInizializza App Engine per il tuo progetto:
gcloud app create --project=project-id
Installa una versione corrente di Node.js.
Installa lo strumento a riga di comando di 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 per 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 visualizza il JWT.
Per prima cosa, scarica il codice ed esegui il deployment dell'app client:
Scarica il codice campione:
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 Google Clouddel progetto Google Cloud che contiene l'app client protetta da IAP:
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 di 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 esegui il deployment dell'app in produzione in un secondo momento, 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.
Aggiungi 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 secret dell'app che hai ottenuto nella sezione precedente.
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.
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 Facebook Login e fai clic su Set up (Configura).
Nel menu di navigazione a sinistra, seleziona Impostazioni (non è necessario 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 di 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 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 al seguente:
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. Dovrebbe avere Facebook elencato come provider di identità.
Fai clic su Salva.
Hai terminato la configurazione di IAP.
Testa l'autenticazione utente
Per verificare che IAP protegga la tua app e autentichi gli utenti con Facebook:
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.
Segui i messaggi sullo schermo per autenticarti con Facebook.
Dovresti essere reindirizzato all'app client, che mostrerà il JWT restituito da Identity Platform.
Per uscire 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 saperne di più, consulta Gestisci le sessioni utente.
Complimenti! Hai eseguito il deployment di un'app in 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.
- Nella console Google Cloud , vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
Inoltre, potresti voler eliminare l'app di Facebook che hai creato.
Passaggi successivi
Personalizza la 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.