Puedes usar la API de OAuth de Cloud (cloudoauth.googleapis.com) para intercambiar
códigos de autorización o tokens de actualización por tokens de acceso de OAuth 2.0
y tokens de ID de OpenID Connect (OIDC) de corta duración de Google Cloud. En
las integraciones de la federación de identidades de personal, tus aplicaciones pueden verificar los tokens de ID devueltos con
las claves públicas de tu organización y usar los tokens de acceso para llamar a las APIs deGoogle Cloud
en nombre de los usuarios federados.
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 OAuth de Cloud si aún no está habilitada.
Roles necesarios para habilitar las APIs
Para habilitar las 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 obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén información para otorgar roles.
Métodos de autenticación
Para autenticar tu cliente de OAuth con la API de OAuth de Cloud, pasa tu ID de cliente y el secreto del cliente de una de las siguientes maneras:
Autenticación básica de 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
Después de que un usuario federado accede con su proveedor de identidad (IdP) en
el extremo de autorización unificado deGoogle Cloud
(https://auth.cloud.google/authorize), el extremo de autorización redirecciona
al usuario al URI de redireccionamiento de tu aplicación con un código de autorización. Para
intercambiar este código de autorización por un token de acceso, un token de actualización y un
token de ID de OIDC, envía una solicitud HTTP POST al extremo con alcance de organización
(usuario único):
Autenticación básica de HTTP (recomendada):
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"
Parámetros 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:
ORGANIZATION_ID: Es el ID numérico de la organización de Google Cloud.BASE64_ENCODED_CREDENTIALS: Es la cadena codificada en base64 deCLIENT_ID:CLIENT_SECRET.AUTHORIZATION_CODE: Es el código de autorización que devuelve el extremo de autorización unificado de Google Cloud (https://auth.cloud.google/authorize).REDIRECT_URI: Es el URI de redireccionamiento configurado en tu cliente de OAuth.CLIENT_ID: Es tu ID de cliente de OAuth registrado.CLIENT_SECRET: Es tu secreto del cliente de OAuth.
Cómo actualizar un token de acceso
Cuando un token de acceso vence, usa el tipo de permiso refresh_token para obtener un nuevo
token de acceso de corta duración del extremo con permiso de organización (usuario único):
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 lo siguiente:
ORGANIZATION_ID: Es el ID numérico de la organización de Google Cloud.BASE64_ENCODED_CREDENTIALS: Es la cadena codificada en Base64 deCLIENT_ID:CLIENT_SECRET.REFRESH_TOKEN: Es el token de actualización que el extremo del token devolvió anteriormente.REDIRECT_URI: Es el URI de redireccionamiento configurado en tu cliente de OAuth.
Campos de respuesta de token
Cuando un intercambio de tokens se realiza correctamente, la API de OAuth de Cloud 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 OAuth de Cloud 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 la vida útil restante del token de acceso en segundos (por lo general,
3599).
|
token_type |
string |
Es el tipo de token (por ejemplo, Bearer). |
scope |
string |
Es una lista de los 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 OAuth de Cloud, consulta Errores de intercambio de tokens de la API de OAuth de Cloud.
Verifica el token de ID de OIDC
En el caso de las integraciones de OIDC de Looker, puedes verificar la firma criptográfica
del id_token que devuelve la API de OAuth de Cloud con las claves web JSON (JWK) públicas de tu
organización.
Recupera los JWK públicos de la organización de una de las siguientes maneras:
- Consulta el extremo del conjunto de claves web JSON (JWKS) directamente: Envía una solicitud HTTP
GETahttps://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/.well-known/jwks.json. - Usa el documento de descubrimiento de OIDC: Envía una solicitud HTTP
GETal extremo de descubrimiento de OIDC (https://auth.cloud.google/oidc/organizations/ORGANIZATION_ID/.well-known/openid-configuration) para recuperar la URL del extremo de JWKS del campojwks_uri.
En ambas URLs de extremos, reemplaza ORGANIZATION_ID por el ID numérico de la organización de Google Cloud .
¿Qué sigue?
- Recupera información del usuario con la API de OAuth de Cloud
- Recupera grupos empresariales con la API de OAuth de Cloud
- Descripción general de la API de OAuth de Cloud
- Administra aplicaciones de OAuth para la federación de identidades de personal
- Referencia de la API de REST de OAuth de Cloud