En esta página se describe cómo autenticar una cuenta de usuario o una cuenta de servicio con un recurso seguro de Identity-Aware Proxy (IAP).
- Una cuenta de usuario pertenece a un usuario individual. Debes autenticarla cuando tu aplicación requiera acceso a recursos protegidos con IAP en nombre de un usuario. Obtén información sobre las credenciales de cuentas de usuario.
- Una cuenta de servicio pertenece a una aplicación y no a un usuario individual. Debes autenticarla cuando desees permitir que una aplicación acceda a tus recursos protegidos con IAP. Obtén más Información sobre las cuentas de servicio.
Antes de comenzar
Necesitarás lo siguiente antes de comenzar:
- Una aplicación protegida con IAP a la que deseas conectarte de manera programática con una cuenta de desarrollador, una cuenta de servicio o credenciales de aplicación para dispositivos móviles.
Autentica una cuenta de usuario
Puedes permitir que los usuarios accedan a tu aplicación, desde una app para dispositivos móviles o de escritorio, de tal forma que el programa interactúe con un recurso protegido con IAP.
Autenticación desde una aplicación para dispositivos móviles
- Crea un ID de cliente de OAuth 2.0 para tu aplicación para dispositivos móviles en el mismo proyecto que el recurso protegido con IAP:
- Ve a la página Credenciales.
Ir a la página Credenciales - Selecciona el proyecto con el recurso protegido con IAP.
- Haz clic en Crear credenciales y, luego, selecciona ID de cliente de OAuth.
- Selecciona el tipo de aplicación para la que quieres crear credenciales.
- Agrega un Nombre y Restricciones si corresponden y, luego, haz clic en Crear.
- Ve a la página Credenciales.
- En la ventana Cliente de OAuth que aparece, toma nota del ID de cliente del recurso protegido con IAP al que deseas conectarte.
- Obtén un token de ID para el ID de cliente protegido con IAP:
- Android: Usa la API de Acceso con Google para solicitar un token de OpenID Connect (OIDC). Establece el ID de cliente
requestIdToken
en el ID de cliente del recurso al que te estás conectando. - iOS: Usa el Acceso con Google para obtener un token de ID. Configura
serverClientID
con el ID de cliente del recurso al que te estás conectando.
- Android: Usa la API de Acceso con Google para solicitar un token de OpenID Connect (OIDC). Establece el ID de cliente
- Incluye el token de ID en un encabezado
Authorization: Bearer
a fin de realizar la solicitud autenticada para el recurso protegido con IAP.
Autenticación desde una aplicación de escritorio
En esta sección se describe cómo autenticar una cuenta de usuario desde una línea de comandos de escritorio.
Configuración del ID de cliente
Para permitir que los desarrolladores accedan a tu aplicación desde la línea de comandos, primero deberás crear credenciales para el ID de cliente de OAuth del tipo app de escritorio:
- Ve a la página Credenciales.
Ir a la página Credenciales - Selecciona el proyecto con el recurso protegido con IAP.
- Haz clic en Crear credenciales y selecciona ID de cliente de OAuth.
- En Tipo de aplicación, selecciona App de escritorio, agrega un Nombre y, a continuación, haz clic en Crear.
- En la ventana del cliente OAuth que aparece a continuación, toma nota del ID de cliente y del secreto del cliente. Los necesitarás en una secuencia de comandos para poder administrar las credenciales o compartirlos con los desarrolladores.
- En la ventana Credenciales, podrás ver tus nuevas credenciales de App de escritorio junto con el ID de cliente principal que se utiliza para acceder a tu aplicación.
Accede a la aplicación
Todos los desarrolladores que quieran tener acceso a una aplicación protegida con IAP deberán primero acceder. Puedes empaquetar el proceso en una secuencia de comandos, por ejemplo, mediante el SDK de Cloud. A continuación se muestra un ejemplo del uso de curl para ingresar y generar un token que se puede usar a fin de acceder a la aplicación:
- Ingresa a tu cuenta que tiene acceso al recurso de Google Cloud.
- Ve al URI siguiente, en el que
DESKTOP_CLIENT_ID
es el ID de cliente de la app de escritorio que creaste anteriormente:https://accounts.google.com/o/oauth2/v2/auth?client_id=DESKTOP_CLIENT_ID&response_type=code&scope=openid%20email&access_type=offline&redirect_uri=urn:ietf:wg:oauth:2.0:oob
- En la ventana que aparece, toma nota del código de autorización para reemplazar
AUTH_CODE
con el ID de cliente de la app de escritorio y el secreto que creaste anteriormente:curl --verbose \ --data client_id=DESKTOP_CLIENT_ID \ --data client_secret=DESKTOP_CLIENT_SECRET \ --data code=AUTH_CODE \ --data redirect_uri=urn:ietf:wg:oauth:2.0:oob \ --data grant_type=authorization_code \ https://oauth2.googleapis.com/token
Este código muestra un objeto JSON con un campo
refresh_token
que puedes guardar como un token de acceso a la aplicación.
Accede a la aplicación
Para acceder a la aplicación, intercambiarás el refresh_token
generado durante el flujo de acceso por un token de ID. El token de ID es válido durante aproximadamente una hora, durante la cual puedes realizar varias solicitudes a una aplicación específica. A continuación se muestra un ejemplo con curl para usar el token y acceder a la aplicación:
- Usa el código que aparece a continuación, donde
REFRESH_TOKEN
es el token del flujo de acceso,IAP_CLIENT_ID
es el principal ID de cliente utilizado para acceder a tu aplicación yDESKTOP_CLIENT_ID
yDESKTOP_CLIENT_SECRET
son el ID de cliente y el secreto que creaste después de la configuración del ID de cliente que aparece antes:curl --verbose \ --data client_id=DESKTOP_CLIENT_ID \ --data client_secret=DESKTOP_CLIENT_SECRET \ --data refresh_token=REFRESH_TOKEN \ --data grant_type=refresh_token \ --data audience=IAP_CLIENT_ID \ https://oauth2.googleapis.com/token
Este código muestra un objeto JSON con un campo
id_token
que puedes usar para acceder a la aplicación. - Usa el
id_token
de la siguiente manera a fin de acceder a la aplicación:curl --verbose --header 'Authorization: Bearer ID_TOKEN' URL
Autenticación desde una cuenta de servicio
Usa un token de OpenID Connect (OIDC) para autenticar una cuenta de servicio con un recurso protegido con IAP. Sigue estos pasos para encontrar tu ID de cliente:
- Ve a la página de IAP.
Encuentra el recurso al que deseas acceder y, luego, haz clic en Más > Editar cliente de OAuth.
En la página Credenciales que aparece a continuación, toma nota del ID de cliente.
También debes agregar la cuenta de servicio a la lista de acceso del proyecto protegido con IAP. En las siguientes muestras de código, se indica cómo obtener un token de OIDC. Sin importar cuál elijas, debes incluir el token en un encabezado Authorization: Bearer
para realizar la solicitud autenticada al recurso protegido con IAP.
Obtén un token de OIDC para la cuenta de servicio predeterminada
Si deseas obtener un token de OIDC para la cuenta de servicio predeterminada de Compute Engine, App Engine o Cloud Run, puedes usar el siguiente código de muestra a fin de generar el token para acceder a un recurso protegido con IAP:
C#
Go
Java
Node.js
PHP
Python
Ruby
Obtén un token de OIDC desde un archivo de claves de una cuenta de servicio local
Si tienes un archivo de claves de cuenta de servicio, puedes adaptar las muestras de código anteriores para proporcionar el archivo de claves de la cuenta de servicio.
Obtén un token de OIDC en todos los demás casos
En todos los demás casos, usa la API de credenciales de IAM paragenerar un token de OIDC basado en un token de acceso para otra cuenta de servicio justo antes de acceder a un recurso protegido con IAP:
- Agrega la cuenta en el token de acceso con la función
service account token creator
a la cuenta de destino. Esto garantiza que tenga el permiso de IAM requerido a fin de crear un token de OIDC para la cuenta de servicio de destino. - Llama a generateIdToken en la cuenta de servicio de destino con el token de acceso.
Presta especial atención para configurar el campo
audience
con el ID de cliente.
¿Qué sigue?
- Obtén más información sobre los tokens del portador para la autorización.
- Intenta acceder a Android o acceder a iOS.