Obtenir l'identité de l'utilisateur

Cette page explique comment obtenir l'identité d'un utilisateur avec Identity-Aware Proxy (IAP). L'obtention de l'identité de l'utilisateur permet à votre application de confirmer qu'une requête est passée par IAP. Pour sécuriser correctement votre application, vous devez toujours utiliser l'un des mécanismes ci-dessous afin d'obtenir l'identité de l'utilisateur authentifié par IAP.

Obtenir l'identité de l'utilisateur avec des en-têtes signés

Pour vous assurer qu'une requête adressée à Compute Engine, GKE, Cloud Run, l'environnement standard App Engine ou votre application d'environnement flexible App Engine a été autorisée par IAP, votre application doit valider chaque requête en vérifiant l'en-tête de requête HTTP x-goog-iap-jwt-assertion. Découvrez comment sécuriser votre application avec des en-têtes signés.

IAP transmet également l'identité de l'utilisateur à votre service de backend dans les en-têtes HTTP suivants. Ces en-têtes doivent comporter le préfixe d'espace de noms accounts.google.com. Ces en-têtes sont disponibles pour des raisons de compatibilité, mais vous ne devez pas vous en servir comme mécanismes de sécurité. Si vous utilisez ces en-têtes, vous devez les comparer aux informations d'identité de l'en-tête JWT authentifié, répertorié ci-dessus.

Nom de l'en-tête Description Exemple de valeur
X-Goog-Authenticated-User-Email Adresse e-mail de l'utilisateur accounts.google.com:example@gmail.com
X-Goog-Authenticated-User-Id Identifiant persistant et unique pour l'utilisateur accounts.google.com:userIDvalue

Obtenir l'identité de l'utilisateur avec l'API Users de l'environnement standard App Engine

Si vous disposez d'une application de l'environnement standard App Engine, vous pouvez également utiliser l'API Users pour obtenir l'identité de l'utilisateur dans votre code d'application.

Si votre application utilise déjà cette API, vous n'avez besoin de rien changer. IAP fournit l'identité de l'utilisateur, mais la valeur de l'ID utilisateur de l'API Users pour chaque utilisateur sera modifiée lors de l'activation d'IAP.

Pour obtenir l'identité de l'utilisateur validée par IAP pour une requête, appelez l'API Users afin d'afficher l'utilisateur actuel. Si la fonction affiche un utilisateur, par exemple req.getUserPrincipal() != null en Java, l'utilisateur a été authentifié par IAP.

Lorsqu'IAP est activé, la première fois qu'un utilisateur accède à votre application, il est redirigé vers un écran d'autorisation qui lui demande de confirmer le partage d'informations sur son identité avec votre application. Cette opération se produit même si l'utilisateur a déjà donné son accord pour cette application avant l'activation d'IAP. Elle se reproduira si vous désactivez, puis réactivez IAP.

Si vous utilisez l'API Users, l'écran d'autorisation est généralement supprimé pour les applications et les utilisateurs qui appartiennent au même domaine Google Workspace. Lorsque vous activez IAP, l'écran d'autorisation n'est pas automatiquement supprimé. Pour le supprimer alors qu'IAP est activé, procédez comme suit :

  1. Accédez à la console d'administration Google.
    Accéder à la console d'administration
  2. Dans la liste des commandes, sélectionnez Sécurité.
    1. Si l'option Sécurité ne s'affiche pas, cliquez sur Autres commandes dans la barre grise au bas de la page, puis sélectionnez Sécurité dans la liste.
    2. Si les commandes ne s'affichent pas, vérifiez que vous êtes connecté en tant qu'administrateur pour le domaine.
  3. Dans la liste des options, sélectionnez Afficher plus, puis Paramètres avancés.
  4. Dans la section Authentification, sélectionnez Gérer l'accès au client API.
  5. Dans le champ Nom du client, saisissez l'ID client OAuth 2.0 IAP. Vous pouvez trouver cet ID sur la page Identifiants.
    Accéder à la page "Identifiants" d'IAP
  6. Dans le champ Un ou plusieurs champs d'application d'API, saisissez email, openid.
  7. Cliquez sur Autoriser.

Pour simplifier ce processus, vous pouvez effectuer un appel d'API afin d'utiliser un seul ID client OAuth 2.0 IAP pour toutes les applications. Vous ne pouvez pas spécifier l'ID client à utiliser avec IAP dans la console Google Cloud.

Étapes suivantes