Cómo compartir clientes de OAuth

En esta página, se explica cómo compartir un cliente de OAuth con otra aplicación dentro de tu organización.

Descripción general

Compartir clientes de OAuth entre proyectos quita la necesidad de crear manualmente un cliente de OAuth nuevo para cada aplicación de tu organización. Después de crear manualmente un cliente de OAuth, puedes asignarlo de manera programática a varias aplicaciones.

El uso compartido de clientes de OAuth también se utiliza para compartir un cliente de OAuth predeterminado con agentes que deseas que puedan habilitar Identity-Aware Proxy (IAP), pero que no tengan acceso a la página de Credenciales.

Ten en cuenta que las aplicaciones para dispositivos móviles no pueden autenticarse con clientes de OAuth de un proyecto diferente.

Antes de comenzar

Sigue una de las guías a continuación para habilitar IAP en una aplicación y crear un cliente de OAuth.

Ten en cuenta que, actualmente, no se admite el uso compartido de clientes con App Engine.

Asigna un cliente compartido a las aplicaciones de Compute Engine

  1. Ve a la página grupos de instancias para asegurarte de que tus instancias estén dentro de un grupo de instancias.
  2. Define los servicios de backend.
  3. Configura el balanceo de cargas.
  4. Con la herramienta de línea de comandos de gcloud, ejecuta gcloud auth login.
  5. Sigue la URL que aparece para obtener acceso.
  6. Después de acceder, copia el código de verificación que aparece y pégalo en la línea de comandos.
  7. Ejecuta gcloud config set project PROJECT_ID para el proyecto en el que deseas habilitar IAP.
  8. Para habilitar IAP, usa el ID y el secreto de tu cliente compartido desde la página de Credenciales y ejecuta el siguiente comando:

    gcloud compute backend-services update BACKEND_SERVICE_NAME  \
       --global --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

Asigna un cliente compartido a las aplicaciones de GKE

Sigue los pasos para configurar el archivo BackendConfig de tu aplicación en vez de usar el ID y el secreto de tu cliente compartido cuando ejecutes el siguiente comando:

kubectl create secret generic my-secret --from-literal=client_id=CLIENT_ID \
    --from-literal=client_secret=CLIENT_SECRET

Riesgos

Si bien es conveniente compartir un cliente entre tus aplicaciones, existen riesgos. En esta sección, se describen los posibles riesgos de compartir clientes y cómo mitigarlos.

Punto único de fallo

El uso de un cliente de OAuth para varias aplicaciones crea un punto único de fallo. Si un cliente se borra o se modifica de forma incorrecta, todas las aplicaciones que usan ese cliente se verán afectadas.

A fin de mitigar esta situación, solo comparte clientes cuando se trate de un caso práctico importante para clientes compartidos.

Filtraciones de secretos del cliente

Para compartir un cliente, debes compartir el secreto del cliente con personas y secuencias de comandos. Esto aumenta el riesgo de que el secreto se filtre. IAP no puede distinguir entre tokens creados a partir de tu aplicación y tokens creados a partir de un secreto del cliente filtrado.

El acceso a tus recursos de IAP se puede supervisar con Cloud Audit Logging. Si crees que existe la posibilidad de que se haya filtrado el secreto del cliente, puedes restablecerlo desde la página de Credenciales.

Para mitigar este riesgo, protege los secretos del cliente, como una contraseña. Limita su uso compartido y nunca los guardes como texto sin formato.

Robo de identidad de usuarios autorizados

Si se filtra el secreto del cliente, una aplicación maliciosa puede configurar la cookie del navegador de autenticación IAP en su dominio para robar la identidad de un usuario autorizado. Con esta cookie, IAP autentica al usuario suplantado en todas las aplicaciones que comparten el secreto del cliente que se filtró.

Para mitigar este riesgo, evita compartir clientes entre recursos que también compartan usuarios autorizados. Establece permisos por recurso para garantizar que, incluso si se autentica a un usuario suplantado, IAP no autorice el acceso.

Recopilación de identidad del usuario

Si se filtra el secreto del cliente, una aplicación maliciosa puede usar tu ID de cliente para recopilar las identidades de los usuarios de tu aplicación. Esto se activa cuando los usuarios visitan la aplicación maliciosa.

Cuando un usuario accede a una aplicación protegida con IAP por primera vez, se le pide que comparta su identidad con la aplicación. Esto les brinda a los usuarios control sobre su información personal. Cuando un usuario da su consentimiento para compartir su identidad, el sistema de acceso de Google registra ese consentimiento. IAP no volverá a preguntar al usuario en solicitudes posteriores de cualquier ID de cliente en el mismo proyecto.

Cualquier usuario que haya dado su consentimiento para compartir su identidad con tu aplicación, y que visite la aplicación maliciosa, inmediatamente compartirá su identidad sin su consentimiento.