Cyber Security Academy · Lección

OpenID Connect (OIDC)

Añada identidad sobre OAuth.

Lección 2 de 413 pasos

OpenID Connect (OIDC) es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 2 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 Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.

Por qué existe OIDC

OpenID Connect es una capa de identidad ligera construida sobre OAuth 2.0. OAuth responde a qué puede hacer esta aplicación; OIDC responde a quién es el usuario.

  • Estandariza la forma en que los clientes autentican a los usuarios y reciben claims de identidad verificados.
  • Introduce el ID token como una aserción de autenticación firmada criptográficamente.

Antes de OIDC, los desarrolladores utilizaban indebidamente los tokens de acceso de OAuth para iniciar sesión, lo que provocaba vulnerabilidades de tipo confused deputy y suplantación de identidad.

El ID token (un JWT)

El artefacto distintivo de OIDC es el ID token, un JWT firmado que describe el evento de autenticación.

  • Contiene claims sobre quién inició sesión y cuándo.
  • Está destinado a que lo consuma el cliente, no el servidor de recursos.

Nunca envíe un ID token a una API como credencial de acceso ni acepte uno sin validar su firma y sus claims.

Header.Payload.Signature
{
  "iss": "https://idp.example",
  "sub": "248289761001",
  "aud": "app123",
  "exp": 1718000000,
  "iat": 1717996400,
  "nonce": "n-abc"
}

Claims principales del ID token

Validar un ID token implica comprobar claims específicos, no solo la firma.

  • El emisor iss debe coincidir con el IdP esperado.
  • La audiencia aud debe contener su client_id.
  • El token exp / iat no debe haber expirado y debe haberse emitido recientemente.
  • sub es un identificador de usuario estable y único.
  • nonce debe coincidir con el valor enviado por su cliente.

El flujo de autenticación de OIDC

OIDC reutiliza el flujo de código de autorización, pero añade el scope openid y un nonce.

  • El cliente solicita el scope openid (además de profile y email, opcionales).
  • El endpoint de tokens devuelve un ID token junto con el token de acceso.
  • El nonce vincula el ID token con la solicitud original, lo que evita la reproducción.
GET /authorize?response_type=code
  &scope=openid profile email
  &client_id=app123
  &redirect_uri=https://app.example/cb
  &state=xyz&nonce=n-abc

Validación de la firma con JWKS

Los proveedores de OIDC publican sus claves de firma en un endpoint JWKS, que se puede descubrir mediante el documento de configuración well-known.

  • Obtenga las claves de jwks_uri y haga coincidir el encabezado kid del token.
  • Verifique la firma con el algoritmo asimétrico indicado (RS256, ES256).

Rechace el algoritmo none y no confíe nunca en un valor de algoritmo proporcionado únicamente por el token.

GET /.well-known/openid-configuration
  -> { "jwks_uri": "https://idp.example/jwks", ... }
GET /jwks
  -> { "keys": [ { "kid": "k1", "kty": "RSA", ... } ] }

El nonce protege frente a la reproducción

El nonce cumple para los ID tokens la misma función que state para la redirección: es un valor de un solo uso que vincula la respuesta con la solicitud.

  • El cliente genera un nonce aleatorio y lo almacena en la sesión.
  • El IdP lo refleja dentro del ID token.
  • Al recibirlo, el cliente verifica que el nonce coincida y que no se haya utilizado antes.

Esto bloquea la reproducción de tokens y la inyección de un token creado para una sesión diferente.

El endpoint UserInfo

Para obtener datos de perfil adicionales a los del ID token, OIDC define el endpoint UserInfo.

  • El cliente lo invoca con el token de acceso (no con el ID token).
  • Devuelve claims como el nombre, el correo electrónico y la imagen del sujeto autenticado.

Compare siempre el sub devuelto con el sub del ID token para evitar la sustitución de claims.

GET /userinfo
Authorization: Bearer <access_token>

-> { "sub": "248289761001", "email": "u@example.com" }

Descubrimiento y metadatos

OIDC estandariza el descubrimiento para que los clientes puedan configurar automáticamente los endpoints y las funciones compatibles.

  • El documento /.well-known/openid-configuration enumera los endpoints, los scopes compatibles y los algoritmos.
  • Fije o valide el emisor; no siga ciegamente el descubrimiento desde un host controlado por un atacante.

El descubrimiento simplifica la integración, pero el emisor sigue siendo un ancla de confianza que debe verificar.

Cierre de sesión por front-channel y back-channel

La terminación de sesiones entre aplicaciones federadas se gestiona mediante las especificaciones de cierre de sesión de OIDC.

  • El cierre de sesión por front-channel utiliza redirecciones o iframes del navegador para cerrar la sesión en cada parte confiante.
  • El cierre de sesión por back-channel envía tokens de cierre de sesión de servidor a servidor; es más fiable, pero requiere endpoints.

Sin un cierre de sesión coordinado, un usuario puede cerrar sesión en una aplicación y seguir conectado en otras, lo que supone un riesgo real para la gestión de sesiones.

Errores comunes de OIDC

Los errores de identidad suelen deberse a que se omiten pasos de validación.

  • Aceptar tokens sin comprobar aud (el token estaba destinado a otro cliente).
  • Ignorar iss, lo que permite la suplantación del IdP.
  • No validar la firma o aceptar alg: none.
  • Confundir los ID tokens con los tokens de acceso.
  • Omitir las comprobaciones de nonce, lo que permite la reproducción.
Validation checklist:
  [ ] iss == expected
  [ ] aud contains client_id
  [ ] exp not passed, iat sane
  [ ] signature verified via JWKS
  [ ] nonce matches session

OIDC frente a OAuth puro para iniciar sesión

Si su objetivo es el inicio de sesión, utilice OIDC, no OAuth puro.

  • Los tokens de acceso de OAuth son opacos para el cliente y no demuestran nada sobre la identidad.
  • Un token de acceso puede ser válido para otro usuario o aplicación, lo que provoca suplantación si se utiliza para iniciar sesión.
  • Los ID tokens de OIDC son aserciones de identidad vinculadas explícitamente a una audiencia.

Esta distinción evita el clásico fallo de autenticación de tipo confused deputy.

Comprobación rápida: validación del ID token

Seleccione el paso de validación más importante para una parte confiante que consume un ID token.

Resumen: OpenID Connect

Conclusiones principales:

  • OIDC añade una capa de identidad a OAuth 2.0; el ID token es un JWT firmado que demuestra la autenticación.
  • Valide siempre iss, aud, exp, firma (mediante JWKS) y nonce.
  • Los ID tokens son para el cliente; los tokens de acceso son para las API; nunca intercambie sus funciones.
  • Utilice nonce frente a la reproducción y state frente a CSRF.
  • Utilice OIDC, no OAuth puro, cuando necesite autenticar usuarios.
Gratis para empezar

Aprende Cyber Security Academy con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
76
Lecciones
303

Preguntas frecuentes

¿La lección «OpenID Connect (OIDC)» es gratis?

Sí — el texto completo de «OpenID Connect (OIDC)» 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 Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.

¿Qué aprenderé en «OpenID Connect (OIDC)»?

Añada identidad sobre OAuth. Practicas Cyber Security 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 Cyber Security Academy?

No se requiere experiencia previa. Cyber Security 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 2 de 4.

¿Cuánto tiempo toma la lección «OpenID Connect (OIDC)»?

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 Cyber Security Academy?

Sí. Cada lección de Cyber Security 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
  2. OpenID Connect (OIDC)
  3. SAML y federación
  4. Ataques a tokens y refuerzo de seguridad
← Volver a Cyber Security Academy