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

En esta guía, se describe cómo recuperar las declaraciones estándar de OpenID Connect (OIDC), las declaraciones personalizadas de directorio y las membresías de grupos para los usuarios autenticados de la organización con el extremo /userinfo en la API de Cloud OAuth (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 canjea un código de autorización por un token de acceso. Para obtener más información, consulta Cómo intercambiar tokens con la API de Cloud OAuth.
  3. Asegúrate de que tu token de acceso incluya el permiso de openid.
  4. 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

Endpoint con alcance de organización

La API de Cloud OAuth proporciona el extremo con alcance de la organización (de un solo arrendatario) que puedes usar cuando tu aplicación cliente y tus recursos están restringidos a unaGoogle Cloud organización específica:

El método organizations.userinfo de la API de Cloud OAuth recupera las reclamaciones estándar de OpenID Connect (OIDC), las reclamaciones personalizadas y las membresías de grupos para el 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 numérico de tu organización 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:

Para los grupos de identidades del personal sin aprovisionamiento de SCIM habilitado, el extremo devuelve atributos de perfil, reclamos personalizados 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"
  ]
}

Reclamos 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 las declaraciones del usuario autenticado.

El formato de las reivindicaciones depende de si tu proveedor de grupo de identidades de personal usa el aprovisionamiento de SCIM:

Reclamos intercalados (grupos de identidades que no son de SCIM)

En el caso de los grupos de identidades para cargas de trabajo sin el aprovisionamiento de SCIM habilitado, el extremo devuelve atributos de perfil, reclamos personalizados 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"
  ]
}

Reclamos distribuidos (grupos de identidades habilitados para SCIM)

En el caso de los grupos de identidades del personal con aprovisionamiento de SCIM habilitado, las membresías de los grupos se devuelven como reclamos distribuidos. 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 reclamo

La respuesta contiene los siguientes campos de reclamo estándar y distribuido:

Campo Tipo Descripción
sub string Es el identificador principal único del usuario autenticado en el grupo de identidades de personal.
name string 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 no SCIM) Es la lista de membresías de grupos empresariales del usuario.
_claim_names object (Solo habilitado para SCIM) Es un objeto JSON que asigna nombres de reclamos distribuidos (como groups) a identificadores de origen en _claim_sources.
_claim_sources object (Solo habilitado para SCIM) Es un objeto JSON que define el extremo de origen para cada identificador de reclamo distribuido.

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

¿Qué sigue?