Gestionar aplicaciones OAuth

En esta guía se explica cómo gestionar las integraciones de aplicaciones basadas en OAuth conGoogle Cloud.

A grandes rasgos, para integrar una aplicación basada en OAuth, debes hacer lo siguiente:

  1. Crea un cliente de OAuth.
  2. Crea una credencial de cliente de OAuth.
  3. En la credencial de cliente de OAuth, obtenga el secreto de cliente. Para obtener información sobre los riesgos asociados al almacenamiento y al acceso al secreto de cliente, así como sobre las estrategias que pueden ayudar a mitigarlos, consulta Riesgos de seguridad y mitigaciones de clientes y credenciales de OAuth.

Una vez que hayas completado estos pasos, la aplicación basada en OAuth podrá acceder a losGoogle Cloud productos y datos.

Antes de empezar

  1. Debes tener una organización configurada. Google Cloud

  2. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

    gcloud init

    Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  3. Debes haber configurado un grupo de identidades y un proveedor de empleados en la organización en la que registrarás la aplicación OAuth. Consulta cómo configurar la federación de identidades de trabajo para Microsoft Entra ID, Okta y otros proveedores de OIDC y SAML 2.0.

Roles obligatorios

Para obtener los permisos que necesitas para registrar una aplicación OAuth para tu organización, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de clientes de OAuth (roles/iam.oauthClientAdmin) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Gestionar clientes de OAuth

En esta sección se explica cómo gestionar los clientes de OAuth.

Crear un cliente de OAuth

Para crear un cliente de OAuth, sigue estos pasos:

gcloud

gcloud iam oauth-clients create APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global \
    --client-type="CONFIDENTIAL_CLIENT" \
    --display-name="My OAuth application" \
    --description="An application registration for MyApp" \
    --allowed-scopes="https://www.googleapis.com/auth/cloud-platform" \
    --allowed-redirect-uris="REDIRECT_URI" \
    --allowed-grant-types="authorization_code_grant"

Haz los cambios siguientes:

  • APP_OAUTH_CLIENT_ID: ID de cliente que representa a este cliente de OAuth.
  • PROJECT_ID: el ID del proyecto en el que has creado el grupo de identidades de Workforce y el proveedor. El proyecto debe crearse en la organización en la que se crearon tu grupo de trabajadores y tu proveedor.
  • REDIRECT_URI: el URI de redirección de la aplicación OAuth. Por ejemplo, https://myapp.com/signin-callback.

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  -d "{ \
        'allowedGrantTypes': ['AUTHORIZATION_CODE_GRANT'], \
        'allowedRedirectUris': ['REDIRECT_URI'], \
        'allowedScopes': ['https://www.googleapis.com/auth/cloud-platform'], \
        'clientType': 'CONFIDENTIAL_CLIENT', \
        'description': 'My OAuth client description', \
        'disabled': false, \
        'displayName': 'My OAuth client'}" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients\?oauthClientId\=APP_OAUTH_CLIENT_ID

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has creado el grupo de identidades de Workforce y el proveedor. El proyecto debe crearse en la organización en la que se crearon tu grupo de trabajadores y tu proveedor.
  • REDIRECT_URI: el URI de redirección de la aplicación OAuth. Por ejemplo, https://myapp.com/signin-callback.
  • APP_OAUTH_CLIENT_ID: ID de cliente que representa a este cliente de OAuth.

Después de registrar la aplicación, crea la credencial de cliente de OAuth y obtiene el secreto que usa la aplicación de OAuth para acceder aGoogle Cloud.

Mostrar clientes de OAuth

Para mostrar los clientes de OAuth registrados, ejecuta el siguiente comando:

gcloud

gcloud iam oauth-clients list \
    --project=PROJECT_ID \
    --location=global

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients

Sustituye PROJECT_ID por el ID del proyecto en el que están registradas tus aplicaciones OAuth.

Describe un cliente de OAuth

Para describir un cliente de OAuth, ejecuta el siguiente comando:

gcloud

gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
    --project PROJECT_ID \
    --location global

Haz los cambios siguientes:

  • APP_OAUTH_CLIENT_ID: el ID del cliente de OAuth que quieres describir
  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID del cliente de OAuth que quieres describir

Actualizar un cliente de OAuth

Para actualizar un cliente de OAuth, ejecuta el siguiente comando.

gcloud

gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global \
    --allowed-redirect-uris="REDIRECT_URI"

Haz los cambios siguientes:

  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth del cliente de OAuth que quieras actualizar
  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • REDIRECT_URI: el URI de redirección de la aplicación OAuth

Para actualizar otros campos, usa las marcas que se indican en gcloud iam oauth-clients update.

REST

curl -d'{"allowedRedirectUris":"REDIRECT_URI"}' \
  -H "Content-Type: application/json" -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID?update_mask=allowed_redirect_uris

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth del cliente de OAuth que quieras actualizar
  • REDIRECT_URI: el URI de redirección del cliente de OAuth

Para actualizar otros campos, asigna update_mask a los nombres de los campos que se indican en gcloud iam oauth-clients update.

Eliminar un cliente de OAuth

Para eliminar un cliente de OAuth, ejecuta el siguiente comando:

gcloud

gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
    --project PROJECT_ID \
    --location global

Haz los cambios siguientes:

  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth que se va a eliminar
  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth

REST

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth que se va a eliminar

Gestionar credenciales de cliente de OAuth

En esta sección se explica cómo gestionar las credenciales de cliente de OAuth.

Crear una credencial de cliente de OAuth

Para crear una credencial de cliente de OAuth, ejecuta el siguiente comando:

gcloud

gcloud iam oauth-clients credentials create APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --display-name='My OAuth client credential' \
    --location='global'

Haz los cambios siguientes:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: un ID que representa esta credencial de cliente.
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth que puedes obtener describiendo la aplicación cliente de OAuth registrada

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  -d "{'disabled': false, 'displayName': 'My OAuth client credential'}" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials\?oauthClientCredentialId=APP_OAUTH_CLIENT_CREDENTIAL_ID

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth que puedes obtener describiendo la aplicación cliente de OAuth registrada
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: un ID que representa esta credencial de cliente.

Mostrar credenciales de cliente de OAuth

Para enumerar las credenciales del cliente de OAuth, ejecuta el siguiente comando:

gcloud

gcloud iam oauth-clients credentials list \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global

Haz los cambios siguientes:

  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth para el que se deben enumerar las credenciales.
  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/$PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth para el que se deben enumerar las credenciales.

Describe una credencial de cliente de OAuth

Para describir una credencial de cliente de OAuth, ejecuta el siguiente comando. Puedes obtener el secreto de cliente inspeccionando el resultado.

gcloud

gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --location='global'

Haz los cambios siguientes:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: el URI de redirección del cliente de OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth que puedes obtener describiendo el registro de la aplicación cliente

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: el URI de redirección del cliente de OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth que puedes obtener describiendo el registro de la aplicación cliente

En el resultado, clientSecret es el secreto de cliente. Este es el secreto que usa la aplicación OAuth para acceder a Google Cloud.

Actualizar una credencial de cliente de OAuth

Para actualizar una credencial de cliente de OAuth, ejecuta el siguiente comando:

gcloud

gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --client-id=APP_OAUTH_CLIENT_ID \
    --display-name="My new credential name" \
    --location=global

REST

curl -d'{"displayName":"My new credential name"}' -X PATCH \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: el URI de redirección del cliente de OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth que puedes obtener describiendo el registro de la aplicación cliente

Inhabilitar una credencial de cliente de OAuth

Para poder eliminar una credencial de cliente de OAuth, primero debes inhabilitarla. Para inhabilitar la credencial de cliente de OAuth, ejecuta el siguiente comando:

gcloud

gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --disabled \
    --project=PROJECT_ID \
    --location=global

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: ID de la credencial de cliente que se va a inhabilitar

REST

curl -d'{"disabled":"true"}' \
  -H "Content-Type: application/json" -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=disabled

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID de cliente de OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: ID de la credencial de cliente que se va a inhabilitar

Eliminar una credencial de cliente de OAuth

Para eliminar una credencial de cliente de OAuth, ejecuta el siguiente comando:

gcloud

gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --project=PROJECT_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --location=global

Haz los cambios siguientes:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: el ID de cliente de OAuth
  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID de la credencial de cliente.

REST

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que has registrado tu aplicación OAuth
  • APP_OAUTH_CLIENT_ID: el ID de la credencial de cliente.
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: el ID de cliente de OAuth

Siguientes pasos