Obtén la identidad del usuario

En esta página, se describe cómo obtener la identidad de un usuario con Identity-Aware Proxy (IAP). Obtener la identidad del usuario permite que la aplicación verifique que una solicitud se realizó mediante IAP. A fin de proteger correctamente tu aplicación, debes usar siempre uno de los siguientes mecanismos para obtener la identidad del usuario autenticado con IAP.

Obtén la identidad del usuario con encabezados firmados

Para asegurarte de que IAP autorizó una solicitud a tu aplicación de Compute Engine, GKE, Cloud Run, el entorno estándar de App Engine o el entorno flexible de App Engine, tu aplicación debe validar cada solicitud mediante la verificación del encabezado de la solicitud HTTP x-goog-iap-jwt-assertion. Obtén más información sobre cómo proteger tu aplicación con encabezados firmados.

IAP también pasa la identidad del usuario a tu servicio de backend en los siguientes encabezados HTTP. Estos encabezados deben tener el prefijo de espacio de nombres accounts.google.com. Estos encabezados están disponibles por razones de compatibilidad, pero no debes usarlos como un mecanismo de seguridad. Si usas estos encabezados, debes compararlos con la información de identidad del encabezado JWT autenticado que se muestra antes.

Nombre del encabezado Descripción Valor de ejemplo
X-Goog-Authenticated-User-Email La dirección de correo electrónico del usuario accounts.google.com:example@gmail.com
X-Goog-Authenticated-User-Id Un identificador único y persistente del usuario accounts.google.com:userIDvalue

Obtención de la identidad del usuario con la API de usuarios del entorno estándar de App Engine

Además, si tienes una aplicación que funciona en un entorno estándar de App Engine, puedes usar las API de usuarios para conseguir la identidad del usuario en el código de tu aplicación.

Si tu aplicación ya utiliza esta API, no es necesario que cambies nada. IAP proporciona la identidad del usuario, pero el valor del ID de usuario de la API de usuarios de cada uno cambiará cuando se active IAP.

A fin de obtener la identidad de usuario verificada con IAP para una solicitud, llama a la API de usuarios de modo que pueda mostrar el usuario actual. Si la función muestra un usuario, como req.getUserPrincipal() != null en Java, el usuario fue autenticado con IAP.

Cuando se habilita IAP, la primera vez que un usuario accede a tu aplicación, se lo redirecciona a una pantalla de consentimiento para confirmar que desea compartir su identidad con tu aplicación. Esto ocurre incluso si el usuario otorgó consentimiento en esta aplicación antes de que habilitaras IAP, y volverá a producirse si inhabilitas IAP y, luego, la vuelves a habilitar.

Por lo general, si usas la API de usuarios, esta suele suprimir la pantalla de consentimiento para las aplicaciones y los usuarios que estén dentro del mismo dominio del lugar de trabajo de Google. Cuando habilitas IAP, la pantalla de consentimiento no se suprime automáticamente. Para suprimir la pantalla de consentimiento con IAP habilitada, sigue estos pasos:

  1. Ve a la Consola del administrador de Google.
    Ir a la Consola del administrador
  2. En la lista de controles, selecciona Seguridad.
    1. Si Seguridad no aparece en la lista, selecciona Más controles en la barra gris en la parte inferior de la página; luego, selecciona Seguridad en la lista de controles.
    2. Si los controles no aparecen, asegúrate de haber accedido como administrador del dominio.
  3. En la lista de opciones, selecciona Mostrar más y, a continuación, Configuración avanzada.
  4. En la sección Autenticación, selecciona Administrar el acceso de cliente de API.
  5. En el campo Nombre del cliente, ingresa el ID del cliente IAP OAuth 2.0. Puedes encontrar el ID de cliente de IAP en la página Credenciales.
    Ir a la página de credenciales de IAP
  6. En el campo Uno o más alcances de la API, ingresa email, openid.
  7. Haz clic en Autorizar.

Para simplificar este proceso, puedes usar una llamada a la API a fin de utilizar un único ID de cliente IAP OAuth 2.0 para todas las aplicaciones. No puedes usar la consola de Google Cloud para especificar el ID de cliente que se usará con IAP.

¿Qué sigue?