Crea clientes de OAuth para IAP de manera programática

En esta página, se describe cómo crear clientes de OAuth de manera programática a fin de usarlos con IAP, lo que te permite configurar IAP de manera programática de principio a fin para aplicaciones internas.

Limitaciones conocidas

Existen algunas limitaciones conocidas para los clientes de OAuth creados de manera programática:

  • Los clientes de OAuth creados por la API solo se pueden modificar mediante la API. No puede modificar un cliente de OAuth a través de Cloud Console si lo creas mediante la API.
  • Solo se permiten 500 clientes de OAuth por proyecto cuando se utiliza la API.
  • Las marcas de la pantalla de consentimiento de OAuth creadas por las API tienen limitaciones específicas. Consulta la sección a continuación para obtener más información.

Comprende las marcas y el estado de la marca

La pantalla de consentimiento de OAuth, que contiene información de marca para los usuarios, se conoce como una marca. Las marcas pueden estar limitadas a usuarios internos o a usuarios públicos. Una marca interna hace que el flujo de OAuth sea accesible para alguien que pertenece a la misma organización del lugar de trabajo de Google que el proyecto. Una marca pública hace que el flujo de OAuth esté disponible para cualquier persona en Internet.

Las marcas se pueden crear de forma manual o programática a través de una API. Las marcas creadas con API se configuran automáticamente con diferentes configuraciones:

  • Están configuradas como internas y las debes configurar de forma manual como públicas si lo deseas
  • Están configuradas en un estado “no revisada” y se debe activar una revisión de marca

Para configurar manualmente una marca interna como pública, haz lo siguiente:

  1. Abre la Pantalla de consentimiento de OAuth.
  2. Selecciona tu proyecto en el menú desplegable.
  3. En la página Pantalla de consentimiento de OAuth, ten en cuenta que el Tipo de usuario se establece automáticamente en Interno. Para configurarlo en Público, haz clic en Editar aplicación. Hay más opciones de configuración disponibles.
  4. En Tipo de aplicación, haz clic en Público.

Para activar una revisión de marca para una marca no revisada creada por API, sigue estos pasos:

  1. Abre la Pantalla de consentimiento de OAuth.
  2. Selecciona tu proyecto en el menú desplegable.
  3. En la página Pantalla de consentimiento de OAuth, ingresa la información requerida y, luego, haz clic en Enviar para verificación.

El proceso de verificación puede demorar varias semanas. Recibirás actualizaciones por correo electrónico a medida que progrese. Más información sobre la verificación. Mientras el proceso de verificación está en curso, puedes usar la aplicación dentro de tu organización de Google Workspace. Obtén más información sobre cómo se comportará tu aplicación antes de que se verifique.

Antes de comenzar

Antes de poder crear un cliente, primero asegúrate de que la persona que llama tenga otorgados los siguientes permisos:

  • clientauthconfig.brands.list
  • clientauthconfig.brands.create
  • clientauthconfig.brands.get
  • clientauthconfig.clients.create
  • clientauthconfig.clients.listWithSecrets
  • clientauthconfig.clients.getWithSecret
  • clientauthconfig.clients.delete
  • clientauthconfig.clients.update

Estos permisos se incluyen en las funciones básicas, Editor (roles/editor) y el Propietario (roles/owner), sin embargo, te recomendamos que crees una función personalizada que contenga estos permisos y otorgarlos a la persona que llama.

Configura OAuth para IAP

En los siguientes pasos. se describe cómo configurar la pantalla de consentimiento y crear un cliente de OAuth para IAP.

  1. Para verificar si ya tienes una marca existente, usa el comando list. Solo puedes tener una marca por proyecto.

    gcloud alpha iap oauth-brands list
    

    El siguiente es un ejemplo de respuesta de gcloud, si la marca existe:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    
  2. Si no existe una marca, usa el comando create:

    gcloud alpha iap oauth-brands create --application_title=APPLICATION_TITLE --support_email=SUPPORT_EMAIL
    

    Los campos anteriores son obligatorios cuando se llama a esta API:

    • supportEmail: Es el correo electrónico de asistencia que se muestra en la pantalla de consentimiento de OAuth. Esta dirección de correo electrónico puede ser la dirección de un usuario o un alias de Grupos de Google. Si bien las cuentas de servicio también tienen una dirección de correo electrónico, no son direcciones de correo electrónico válidas reales y no se pueden usar cuando se crea una marca. Sin embargo, una cuenta de servicio puede ser propietaria de un Grupo de Google. Crea un Grupo de Google nuevo o configura un grupo existente y configura la cuenta de servicio deseada como propietaria del grupo.

    • applicationTitle: Es el nombre de la aplicación que se muestra en la pantalla de consentimiento de OAuth.

    La respuesta contiene los siguientes campos:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    

Crea un cliente de OAuth para IAP

  1. Usa el comando create para crear un cliente. Usa la marca name del paso anterior:

    gcloud alpha iap oauth-clients create projects/PROJECT_ID/brands/BRAND-ID --display_name=NAME
    

    La respuesta contiene los siguientes campos:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_NAME]/identityAwareProxyClients/[CLIENT_ID]
    secret: [CLIENT_SECRET]
    displayName: [NAME]
    
  2. Usa el ID de cliente (client_id en el ejemplo anterior) y secret para habilitar IAP. Consulta los siguientes temas para obtener más información sobre cómo habilitar IAP mediante las credenciales que acabas de crear:

Autenticar

Una vez que IAP está configurado para una app, todas las solicitudes deben autenticarse. Los siguientes pasos describen cómo acceder a una aplicación protegida por IAP de manera programática.

Autenticación del usuario final

Después de completar los pasos anteriores, consulta este tema para obtener más información sobre cómo autenticarse con OAuth 2.0. Asegúrate de solicitar un token de actualización para permitir la automatización. Se requiere el consentimiento manual durante el flujo de OAuth, sin embargo, el token de actualización se puede utilizar para obtener tokens de acceso nuevos de manera programática.

Cuentas de servicio y gcloud

Para autenticarse mediante una cuenta de servicio y gcloud, haz lo siguiente:

  1. Crea una cuenta de servicio y otórgale los permisos necesarios.
  2. Crea una clave de cuenta de servicio y descárgala a la ruta deseada.
  3. Ejecuta el siguiente comando de gcloud, mediante la especificación de la ruta a la clave de la cuenta de servicio:

    gcloud auth activate-service-account [ACCOUNT-NAME]
        --key-file=/path/to/service-key.json --project=[PROJECT_ID]
    
  4. Realiza solicitudes a la API mediante gcloud auth print-access-token:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
        https://iap.googleapis.com/v1/projects/[PROJECT_ID_OR_NUMBER]/brands