Accéder par programmation à des ressources non-Google

Cet article explique comment accéder par programmation à une ressource protégée par Identity-Aware Proxy (IAP) à l'aide d'identités externes.

Il existe plusieurs situations dans lesquelles vous souhaiterez peut-être effectuer cette opération :

  • Votre application d'interface exploite directement Identity Platform. Votre serveur d'API backend a été créé à l'aide d'App Engine et est protégé par IAP à l'aide d'identités externes.

  • Votre application est conçue pour être utilisée dans un environnement de navigateur non traditionnel, comme Android, iOS ou la ligne de commande, où il est impossible d'utiliser une redirection de navigateur pour authentifier les utilisateurs.

Accéder aux ressources

Pour accéder à une ressource par programmation, procédez comme suit :

  1. Récupérez le jeton d'ID de l'utilisateur.

    Node.js

    Vérifiez que l'utilisateur est connecté. Le code ci-dessous présente un exemple simple de connexion d'un utilisateur avec une adresse e-mail et un mot de passe :

    // If signing in using project-level email/password IdP.
    // auth.tenantId = null; // This is null by default.
    // For signing in to a specific tenant using email/password.
    auth.tenantId = 'myTenantId';
    auth.signInWithEmailAndPassword(email, password)
      .then((user) => {
        // User signed in. ID token can now be retrieved.
      })
      .catch((error) => {
        // Handler error.
      });
    

    Vous pouvez ensuite récupérer un jeton d'ID sur l'objet user :

    user.getIdToken()
      .then((idToken) => {
        // idToken is now available and can be sent to API server.
      })
      .catch((error) => {
        // Handler error.
      });
    

    REST

    L'appel de signInWithPassword renvoie un jeton d'ID dans la réponse :

    curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=API-KEY' \
    -H 'Content-Type: application/json' \
    --data-binary '{
      "email":"EMAIL",
      "password":"PASSWORD",
      "returnSecureToken":true,
      "tenantId":"TENANT-ID" # Only used in multi-tenancy
      }'
  2. Incluez le jeton d'ID dans l'en-tête d'autorisation lors de l'appel d'un point de terminaison protégé par IAP.

    curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"