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
- Configura un grupo y un proveedor de Workforce Identity. Para obtener más información, consulta Configura la federación de identidades de personal.
- Registra un cliente de OAuth y crea credenciales de cliente. Para obtener más información, consulta Administra aplicaciones de OAuth.
-
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.
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_idyclient_secreten 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 deCLIENT_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?
- Cómo recuperar información del usuario con la API de Cloud OAuth
- Cómo recuperar grupos empresariales con la API de Cloud OAuth
- Descripción general de la API de Cloud OAuth
- Administra aplicaciones de OAuth para la federación de identidades de personal
- Referencia de la API de REST de Cloud OAuth