Intercambia tokens con la API de Cloud OAuth

En esta guía, se describe cómo intercambiar credenciales externas, códigos de autorización o tokens de actualización por tokens de acceso de Google Cloud con la API de Cloud OAuth (cloudoauth.googleapis.com) en las integraciones de la federación de identidades de personal.

Antes de comenzar

  1. Configura un grupo y un proveedor de Workforce Identity. Para obtener más información, consulta Configura la federación de identidades de personal.
  2. Registra un cliente de OAuth y crea credenciales de cliente. Para obtener más información, consulta Administra aplicaciones de OAuth.
  3. Habilita la API de Cloud OAuth.

    Roles necesarios para habilitar las APIs

    Para habilitar APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

    Habilitar la API

Métodos de autenticación

La API de Cloud OAuth admite dos métodos de autenticación de clientes:

  • Autenticación básica HTTP (recomendada): Pasa el ID de cliente y el secreto del cliente codificados en Base64 en el encabezado Authorization:

    -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"
    
  • Parámetros del cuerpo de la solicitud: Pasa los parámetros client_id y client_secret en el cuerpo de la solicitud.

Intercambia un código de autorización por tokens

Para intercambiar un código de autorización Google Cloud por un token de acceso y un token de actualización, envía una solicitud HTTP POST:

  • Extremo con alcance de organización (de un solo arrendatario)

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    

    Credenciales del cuerpo de la solicitud

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI" \
    --data-urlencode "client_id=CLIENT_ID" \
    --data-urlencode "client_secret=CLIENT_SECRET"
    

Reemplaza lo siguiente:

  • BASE64_ENCODED_CREDENTIALS: Es la cadena codificada en Base64 de CLIENT_ID:CLIENT_SECRET.
  • AUTHORIZATION_CODE: Es el código de autorización que emiteGoogle Cloud.
  • REDIRECT_URI: Es el URI de redireccionamiento configurado en tu cliente de OAuth.
  • ORGANIZATION_ID: Es el ID numérico de tu organización Google Cloud.
  • CLIENT_ID: Es el ID de cliente de OAuth registrado.
  • CLIENT_SECRET: Tu secreto del cliente de OAuth

Cómo actualizar un token de acceso

Cuando vence un token de acceso, usa el tipo de otorgamiento refresh_token para obtener un nuevo token de acceso de corta duración:

  • Extremo con alcance de organización (de un solo arrendatario)

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=refresh_token" \
    --data-urlencode "refresh_token=REFRESH_TOKEN" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    

Reemplaza REFRESH_TOKEN por el token de actualización que devolvió anteriormente el extremo del token.

Campos de respuesta del token

Cuando el intercambio de tokens se realiza correctamente, la API de Cloud OAuth devuelve un estado HTTP 200 OK que contiene los siguientes campos:

Campo Tipo Descripción
access_token string Es el token de acceso de OAuth 2.0 que emite la API de Cloud OAuth para llamar a las APIs de Google Cloud .
refresh_token string Es el token de actualización que se usa para obtener tokens de acceso nuevos cuando vence el token actual.
expires_in integer Es el tiempo restante de vida útil del token de acceso en segundos (por lo general, 3599).
token_type string Tipo de token (por ejemplo, Bearer)
scope string Es la lista de permisos asociados con el token.
id_token string Es el token de ID de OIDC que contiene las reclamaciones de identidad autenticadas.

Para obtener información sobre las respuestas de error que devuelve la API de Cloud OAuth, consulta Errores de intercambio de tokens de la API de Cloud OAuth.

¿Qué sigue?