Recupera información del usuario con la API de Cloud OAuth

En esta guía, se describe cómo recuperar las reclamaciones estándar de OpenID Connect (OIDC), las reclamaciones de directorio personalizadas y las membresías de grupos para los usuarios de personal autenticados con el extremo /userinfo en la API de OAuth de Cloud (cloudoauth.googleapis.com).

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 cambia un código de autorización por un token de acceso. Para obtener más información, consulta Intercambia tokens con la API de OAuth de Cloud.
  3. Asegúrate de que tu token de acceso incluya el permiso openid.
  4. 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 más información para otorgar roles.

    Habilitar la API

Extremo con permiso de organización

La API de OAuth de Cloud proporciona el extremo con alcance de organización (usuario único) que puedes usar cuando tu aplicación cliente y tus recursos están restringidos a una organización deGoogle Cloud específica:

El método organizations.userinfo de la API de OAuth de Cloud recupera las reclamaciones estándar de OpenID Connect (OIDC), las reclamaciones personalizadas y las membresías de grupos del usuario autenticado en una organización específica.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • TOKEN: Es el token de acceso de OAuth 2.0 de corta duración que se obtiene del extremo de intercambio de tokens.
  • ORGANIZATION_ID: Es el ID de organización numérico de Google Cloud .

Método HTTP y URL:

GET https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/userinfo

Para enviar tu solicitud, expande una de estas opciones:

En el caso de los grupos de identidades de personal que no tienen habilitado el aprovisionamiento de SCIM, el extremo devuelve atributos de perfil, reclamaciones personalizadas y membresías de grupos intercalados:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "email": "user@example.com",
  "custom_claim1": "engineering",
  "custom_claim2": "us-west",
  "groups": [
    "looker-developers",
    "analytics-viewers"
  ]
}

Reclamaciones de usuarios y grupos distribuidos de SCIM

Cuando una solicitud se realiza correctamente, el extremo /userinfo devuelve un estado HTTP 200 OK y un objeto JSON que contiene reclamaciones para el usuario autenticado.

El formato de las reclamaciones depende de si tu proveedor de grupos de identidades de personal usa el aprovisionamiento de SCIM:

Reclamaciones intercaladas (grupos de identidades que no son de SCIM)

Para los grupos de Workforce Identity que no tienen habilitado el aprovisionamiento de SCIM, el extremo devuelve atributos de perfil, reclamaciones personalizadas y membresías de grupos intercalados:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "email": "user@example.com",
  "custom_claim1": "engineering",
  "custom_claim2": "us-west",
  "groups": [
    "looker-developers",
    "analytics-viewers"
  ]
}

Reclamaciones distribuidas (grupos de identidades habilitados para SCIM)

En el caso de los grupos de identidades de personal con el aprovisionamiento de SCIM habilitado, las membresías de grupo se devuelven como reclamaciones distribuidas. La respuesta incluye _claim_names y _claim_sources que hacen referencia al extremo /groups:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "name": "Jane Doe",
  "email": "user@example.com",
  "_claim_names": {
    "groups": "src1"
  },
  "_claim_sources": {
    "src1": {
      "endpoint": "https://cloudoauth.googleapis.com/v1/common/groups"
    }
  }
}

Campos de reclamación

La respuesta contiene los siguientes campos de reclamación estándar y distribuida:

Campo Tipo Descripción
sub string Es el identificador de principal único del usuario autenticado en el grupo de identidades de personal.
name string Es el nombre completo del usuario, si está disponible en el proveedor de identidad.
email string Es la dirección de correo electrónico del usuario autenticado.
groups array of strings (Solo para usuarios que no son de SCIM) Es la lista de membresías de grupos empresariales del usuario.
_claim_names object (Solo con SCIM habilitado) Es un objeto JSON que asigna nombres de reclamaciones distribuidas (como groups) a identificadores de origen en _claim_sources.
_claim_sources object (Solo con SCIM habilitado) Es un objeto JSON que define el extremo de origen para cada identificador de reclamación distribuida.

Para obtener información sobre las respuestas de error que devuelve el extremo /userinfo, consulta Errores de grupos y de información del usuario de OAuth de Cloud.

¿Qué sigue?