0Pricing
Cryptology Academy · Lección

Claims y tokens de ID de OpenID Connect

Decodifique tokens de ID basados en JWT, comprenda la validación de claims e implemente OIDC correctamente.

Claims y tokens de ID de OpenID Connect es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

OIDC como capa de identidad

OpenID Connect (OIDC) añade una capa de identidad sobre OAuth 2.0. Mientras que OAuth 2.0 gestiona la autorización (¿a qué puede acceder esta aplicación?), OIDC responde a la pregunta de identidad (¿quién es el usuario?). OIDC se implementa añadiendo el scope "openid" a una solicitud de OAuth 2.0, lo que hace que el servidor de autorización devuelva un token de ID junto con el token de acceso.

El token de ID como JWT

El token de ID de OIDC es un JSON Web Token (JWT) que contiene claims sobre el usuario autenticado. El JWT está firmado por el servidor de autorización mediante su clave privada (normalmente RS256 o ES256), y la parte confiante (la aplicación cliente) verifica la firma utilizando las claves públicas publicadas por el servidor de autorización (punto de conexión JWKS).

Claims estándar del token de ID

Claims del token de ID obligatorios y de uso habitual: "sub" (subject, identificador único del usuario), "iss" (issuer, URL del servidor de autorización), "aud" (audience, ID del cliente), "exp" (marca de tiempo de expiración de Unix), "iat" (marca de tiempo de emisión de Unix). Opcionales: "auth_time" (momento en que tuvo lugar la autenticación), "nonce" (prevención de ataques de repetición), "at_hash" (hash del token de acceso), "acr" (clase de contexto de autenticación), "amr" (métodos de autenticación utilizados).

Punto de conexión UserInfo

El punto de conexión UserInfo de OIDC devuelve claims adicionales sobre el usuario autenticado cuando se invoca con un token de acceso válido. Los clientes solicitan conjuntos específicos de claims mediante scopes: "profile" (nombre, imagen, configuración regional), "email" (correo electrónico, email_verified), "address" (dirección con formato), "phone" (phone_number, phone_number_verified). La respuesta de UserInfo es un objeto JSON o un JWT.

Validación del token de ID: firma

La validación del token de ID comienza verificando la firma. El cliente obtiene el JWKS (JSON Web Key Set, conjunto de claves web JSON) del servidor de autorización desde el punto de conexión conocido, encuentra la clave que coincide con el parámetro "kid" (ID de clave) de la cabecera del JWT y verifica la firma del JWT. Esto demuestra que el token fue emitido por el servidor de autorización legítimo y que no ha sido manipulado.

Validación de claims: iss, aud, exp

Después de verificar la firma, el cliente debe validar lo siguiente: "iss" debe coincidir exactamente con la URL esperada del servidor de autorización (incluidos el esquema y la ruta). "aud" debe contener el propio client_id del cliente. "exp" debe estar en el futuro (se deben rechazar los tokens caducados). "iat" debe ser razonablemente reciente. Las cuatro comprobaciones son obligatorias según la especificación de OIDC.

Nonce para prevenir ataques de repetición

El claim nonce evita los ataques de repetición de tokens de ID. El cliente genera un nonce aleatorio y lo incluye en la solicitud de autorización. El servidor de autorización incorpora el nonce al token de ID. El cliente verifica que el nonce del token de ID coincida con el que envió. Esto evita que un atacante que capture un token de ID pueda reutilizarlo para autenticarse en otra sesión.

Debilidades del token de ID en el flujo implícito

Cuando OIDC utiliza el flujo implícito (response_type=id_token), el token de ID se devuelve directamente en el fragmento de la URL. El cliente debe validar at_hash (el hash del token de acceso) para vincular el token de acceso al token de ID. Sin la validación de at_hash, son posibles los ataques de sustitución del token de acceso. Esta es otra razón por la que el flujo implícito está deprecado.

Scopes y claims de OIDC

OIDC define mapeos estándar entre scopes y claims. El scope "openid" es obligatorio y devuelve el claim "sub". "profile" devuelve name, given_name, family_name, nickname, picture, website, locale, zoneinfo, updated_at. "email" devuelve email y email_verified. Solicitar scopes innecesarios infringe el principio de divulgación mínima y puede exponer datos confidenciales del usuario.

Inyección de claims mediante proveedores maliciosos

Al implementar un inicio de sesión OIDC con varios proveedores (por ejemplo, "Sign in with Google" y "Sign in with GitHub"), pueden producirse ataques de inyección de claims. Si un atacante crea una cuenta en el proveedor B con la dirección de correo electrónico de una víctima que utiliza el proveedor A, podría obtener acceso si la aplicación vincula las cuentas basándose únicamente en el claim de email. Vincule siempre las cuentas mediante el par (iss, sub), no solo mediante el correo electrónico.

Casos de uso del flujo híbrido

El flujo híbrido de OIDC (response_type=code id_token) devuelve tanto un código de autorización como un token de ID desde el punto de conexión de autorización. El token de ID permite verificar la identidad de inmediato, mientras que el código se intercambia por tokens mediante el canal de retorno. Se utiliza cuando el cliente necesita mostrar inmediatamente la información del usuario antes de completar el intercambio de tokens mediante el canal de retorno.

Comprobación de la validación del token de ID

¿Qué combinación de claims debe validar una parte confiante en un token de ID de OIDC?

Resumen de la lección: claims y tokens de ID de OIDC

OIDC añade un token de ID JWT firmado a los flujos de OAuth 2.0. Valide la firma (JWKS), iss (coincidencia exacta), aud (client_id), exp (no caducado) y nonce (si se envió). El punto de conexión UserInfo proporciona claims adicionales mediante scopes. Vincule las cuentas mediante el par (iss, sub), nunca solo mediante el correo electrónico, para evitar la inyección de claims. El flujo implícito está deprecado; utilice el código de autorización con PKCE para OIDC.

Preguntas frecuentes

¿La lección «Claims y tokens de ID de OpenID Connect» es gratis?

Sí — el texto completo de «Claims y tokens de ID de OpenID Connect» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Claims y tokens de ID de OpenID Connect»?

Decodifique tokens de ID basados en JWT, comprenda la validación de claims e implemente OIDC correctamente. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Claims y tokens de ID de OpenID Connect»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Flujos de OAuth 2.0 y tipos de tokens
  2. PKCE: protección de clientes públicos
  3. Claims y tokens de ID de OpenID Connect
  4. Vulnerabilidades de OAuth y patrones de ataque
← Volver a Cryptology Academy