Authentifier les utilisateurs avec des identités externes
Ce guide de démarrage rapide indique comment sécuriser une application à l'aide d'Identity-Aware Proxy (IAP) et d'identités externes. En combinant IAP et Identity Platform, vous pouvez authentifier les utilisateurs avec un large éventail de fournisseurs d'identité, par exemple OAuth, SAML et OIDC, en plus des comptes Google.
Dans ce guide de démarrage rapide, vous allez sécuriser un exemple d'application App Engine à l'aide de l'authentification Facebook.
Avant de commencer
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Make sure that billing is enabled for your Google Cloud project.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Initialisez App Engine pour votre projet :
gcloud app create --project=project-id
Installez une version actuelle de Node.js.
Installez l'outil de ligne de commande Firebase :
npm install -g firebase-tools
Activer les API
Tout d'abord, activez Identity Platform :
Accédez à la page Identity Platform Marketplace dans la console Google Cloud.
Cliquez sur Activer Identity Platform. La page "Identity Platform" s'affiche dans la console Google Cloud.
Ensuite, activez IAP :
Accédez à la page IAP dans la console Google Cloud.
Sélectionnez le projet que vous avez utilisé pour Identity Platform. Il n'est pas possible d'utiliser des projets différents.
Cliquez sur Activer l'API.
Télécharger et déployer l'exemple de code
Le code utilisé dans ce guide de démarrage rapide comporte deux composants : une application cliente et une application d'authentification.
L'application cliente est protégée par IAP. Lorsqu'il reçoit une requête d'un utilisateur non authentifié, il la redirige vers l'application d'authentification afin de vérifier l'identité de l'utilisateur. Si l'utilisateur se connecte correctement, l'application d'authentification répond avec un jeton Web JSON (JWT, JSON Web Token). À des fins de démonstration, l'application cliente affiche le JWT.
Commencez par télécharger le code, puis déployez l'application cliente :
Téléchargez l'exemple de code :
git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
Accédez au répertoire de l'application cliente :
cd iap-gcip-web-toolkit/sample/app
Installez les dépendances :
npm install
Déployez l'application cliente sur App Engine :
npm run deploy
L'application cliente se lance à l'URL suivante :
https://[PROJECT-ID].appspot.com
Déployez ensuite l'application d'authentification :
Accédez au répertoire de l'application d'authentification :
cd ../authui-firebaseui
Installez les dépendances :
npm install
Configurez l'application d'authentification pour utiliser Firebase Hosting. Spécifiez l'ID du projet Google Cloud contenant l'application cliente protégée par l'IAP:
firebase use project-id
Déployez l'application :
npm run deploy
L'application d'authentification se lance à l'URL suivante :
https://[PROJECT-ID].firebaseapp.com
Vous avez déployé l'application cliente et l'application d'authentification ! L'étape suivante consiste à configurer Identity Platform et IAP.
Configurer Identity Platform
IAP authentifie les identités externes à l'aide d'Identity Platform. Dans ce guide de démarrage rapide, Facebook est utilisé à titre d'exemple, mais Identity Platform est compatible avec un large éventail de fournisseurs d'identité.
Créer une application Facebook
Pour authentifier des utilisateurs avec Facebook, vous devez fournir un ID d'application et un secret d'application.
Connectez-vous à Facebook for Developers. Si vous ne possédez pas encore de compte Facebook, vous devez en créer un.
Accédez à la page Apps (Applications) de Facebook.
Cliquez sur Add a New App (Ajouter une nouvelle application).
Dans le menu de gauche, sélectionnez Settings > Basic (Paramètres > De base).
Dans la zone Privacy Policy URL (URL des règles de confidentialité), saisissez une URL valide. Si vous déployez l'application en production ultérieurement, vous pouvez la mettre à jour afin qu'elle renvoie vers vos règles de confidentialité.
Prenez note de votre ID d'application et de votre secret d'application. Vous en aurez besoin à la section suivante.
Ajouter Facebook en tant que fournisseur d'identité
Configurez Identity Platform de façon à utiliser Facebook pour l'authentification :
Accédez à la page Fournisseurs d'identité dans la console Google Cloud.
Cliquez sur Ajouter un fournisseur.
Sélectionnez Facebook dans la liste des fournisseurs.
Saisissez l'ID d'application et le secret d'application que vous avez obtenus à la section précédente.
Cliquez sur Save.
Configurer l'URI de redirection OAuth
Lorsque Facebook termine le traitement d'une requête provenant de l'application d'authentification, il a besoin d'un URI vers lequel effectuer la redirection.
Revenez à la page Apps (Applications) de Facebook, puis sélectionnez votre application.
Dans le menu de gauche, cliquez sur Products (Produits).
Recherchez le produit Facebook Login, puis cliquez sur Set Up (Configurer).
Dans le menu de navigation de gauche, sélectionnez Settings (Paramètres). Vous n'avez pas besoin de suivre le processus de démarrage rapide guidé.
Dans la zone Valid OAuth Redirect URIs (URI de redirection OAuth valides), saisissez l'URI de redirection :
https://project-id.firebaseapp.com/__/auth/handler
Vous trouverez également cet URI sur la page de configuration du fournisseur d'Identity Platform.
Cliquez sur Enregistrer les modifications.
Vous avez terminé de configurer Identity Platform ! Vous pouvez maintenant configurer IAP afin de l'utiliser pour l'authentification.
Activer IAP pour utiliser des identités externes
Accédez à la page "IAP" dans la console Google Cloud.
Cliquez sur l'onglet APPLICATIONS.
Sélectionnez l'exemple d'application App Engine que vous avez déployé précédemment. L'URL figurant dans la catégorie Published (Publié) doit ressembler à ceci :
https://project-id.appspot.com
Dans la colonne "IAP", basculez le bouton sur Activer.
Dans le panneau latéral, cliquez sur Démarrer pour Utiliser des identités externes pour l'autorisation.
Sous Page de connexion, sélectionnez Je fournis ma propre page.
Dans le champ URL d'authentification, saisissez l'URL de l'application d'authentification. Elle doit ressembler à ceci :
https://project-id.firebaseapp.com/
Une fois l'URL saisie, la console Google Cloud ajoute automatiquement votre clé API.
Cochez la case correspondant au nom de votre projet. Facebook doit être répertorié en tant que fournisseur d'identité.
Cliquez sur Enregistrer.
Vous avez terminé de configurer IAP.
Tester l'authentification des utilisateurs
Pour vérifier que IAP protège votre application et authentifie les utilisateurs avec Facebook:
Accédez à l'application App Engine cliente dans votre navigateur :
https://project-id.appspot.com
Un écran de chargement s'affiche brièvement, puis vous êtes redirigé vers la page de connexion Identity Platform.
Suivez les instructions à l'écran pour vous authentifier avec Facebook.
Vous devriez être redirigé vers l'application cliente, qui affichera le JWT renvoyé par Identity Platform.
Pour vous déconnecter complètement, vous devez vous déconnecter de l'application exemple que vous avez créée et de Facebook. Vous devez vous déconnecter des deux applications, car Firebase établit une session avec Facebook valable pendant une heure. Pour en savoir plus, consultez Gérer les sessions utilisateur.
Félicitations ! Vous avez déployé une application sur App Engine, et l'avez protégée avec IAP et des identités externes.
Effectuer un nettoyage
Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud, procédez comme suit :
- 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.
Vous pouvez également supprimer l'application Facebook que vous avez créée.
Étape suivante
- Personnalisez votre UI d'authentification avec FirebaseUI ou créez une UI personnalisée à partir de zéro.
- Apprenez-en plus sur la configuration des fournisseurs d'identité avec Identity Platform.
- Découvrez comment créer des silos uniques d'utilisateurs et de configurations grâce à l'architecture mutualisée d'Identity Platform.