Acceder a recursos que no son de Google de forma programática

En este artículo se explica cómo acceder mediante programación a un recurso protegido por Identity-Aware Proxy (IAP) con identidades externas.

Hay varias situaciones en las que puede ser útil:

  • Tu aplicación frontend utiliza Identity Platform directamente. El servidor de la API backend se ha creado con App Engine y está protegido por IAP mediante identidades externas.

  • Tu aplicación está diseñada para usarse en un entorno de navegador no tradicional, como Android, iOS o la línea de comandos, donde no es viable usar una redirección del navegador para autenticar a los usuarios.

Acceder a recursos

Para acceder a un recurso de forma programática mediante un JWT de cuenta de servicio, consulta Autenticación con un JWT de cuenta de servicio.

Para acceder a un recurso de forma programática mediante un token de ID, sigue estos pasos:

  1. Recupera el token de ID del usuario.

    Node.js

    Asegúrate de que el usuario haya iniciado sesión. El siguiente código muestra un ejemplo sencillo de cómo iniciar la sesión de un usuario con un correo y una contraseña:

    // 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.
      });
    

    Después, puede recuperar un token de ID en el objeto user:

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

    REST

    Al llamar a signInWithPassword, se devuelve un token de ID en la respuesta:

    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. Incluye el token de ID en el encabezado de autorización al llamar a un endpoint protegido por IAP.

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