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

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  3. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

    gcloud init

  4. Initialisez App Engine pour votre projet :

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

  6. Installez une version actuelle de Node.js.

  7. Installez l'outil de ligne de commande Firebase :

    npm install -g firebase-tools
    

Activer les API

Tout d'abord, activez Identity Platform :

  1. Accédez à la page Identity Platform Marketplace dans la console Google Cloud.

    Accéder à la page Identity Platform Marketplace

  2. Cliquez sur Activer Identity Platform. La page "Identity Platform" s'affiche dans la console Google Cloud.

Ensuite, activez IAP :

  1. Accédez à la page IAP dans la console Google Cloud.

    Accéder à la page IAP

  2. Sélectionnez le projet que vous avez utilisé pour Identity Platform. Il n'est pas possible d'utiliser des projets différents.

  3. 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 :

  1. Téléchargez l'exemple de code :

    git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
    
  2. Accédez au répertoire de l'application cliente :

    cd iap-gcip-web-toolkit/sample/app
    
  3. Installez les dépendances :

    npm install
    
  4. 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 :

  1. Accédez au répertoire de l'application d'authentification :

    cd ../authui-firebaseui
    
  2. Installez les dépendances :

    npm install
    
  3. 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 IAP:

    firebase use project-id
    
  4. 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.

  1. Connectez-vous à Facebook for Developers. Si vous ne possédez pas encore de compte Facebook, vous devez en créer un.

  2. Accédez à la page Apps (Applications) de Facebook.

  3. Cliquez sur Add a New App (Ajouter une nouvelle application).

  4. Dans le menu de gauche, sélectionnez Settings > Basic (Paramètres > De base).

  5. 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é.

  6. 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 :

  1. Accédez à la page Fournisseurs d'identité dans la console Google Cloud.

    Accéder à la page "Fournisseurs d'identité"

  2. Cliquez sur Ajouter un fournisseur.

  3. Sélectionnez Facebook dans la liste des fournisseurs.

  4. Saisissez l'ID d'application et le secret d'application que vous avez obtenus à la section précédente.

  5. Cliquez sur Enregistrer.

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.

  1. Revenez à la page Apps (Applications) de Facebook, puis sélectionnez votre application.

  2. Dans le menu de gauche, cliquez sur Products (Produits).

  3. Recherchez le produit Facebook Login, puis cliquez sur Set Up (Configurer).

  4. 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é.

  5. 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.

  6. 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

  1. Accédez à la page "IAP" dans la console Google Cloud.

    Accéder à la page IAP

  2. Cliquez sur l'onglet APPLICATIONS.

  3. 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
    
  4. Dans la colonne "IAP", basculez le bouton sur Activer.

  5. Dans le panneau latéral, cliquez sur Démarrer pour Utiliser des identités externes pour l'autorisation.

  6. Sous Page de connexion, sélectionnez Je fournis ma propre page.

  7. 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.

  8. Cochez la case correspondant au nom de votre projet. Facebook doit être répertorié en tant que fournisseur d'identité.

  9. Cliquez sur Enregistrer.

Vous avez terminé de configurer IAP.

Tester l'authentification des utilisateurs

Pour vérifier qu'IAP protège votre application et authentifie les utilisateurs avec Facebook, procédez comme suit:

  1. 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.

  2. Suivez les instructions à l'écran pour vous authentifier avec Facebook.

  3. 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 d'une durée d'une heure. Pour en savoir plus, consultez la page 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 :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Vous pouvez également supprimer l'application Facebook que vous avez créée.

Étapes suivantes