¿Qué es OpenID Connect?
OpenID Connect u OIDC es un protocolo de identidad construido sobre OAuth 2.0 que permite a una aplicación comprobar la identidad de un usuario autenticado. Utiliza componentes como el ID Token, el UserInfo Endpoint y los flujos definidos sobre OAuth 2.0 para incorporar autenticación a una arquitectura de autorización.
¿Qué es OpenID Connect?
OpenID Connect es un protocolo de identidad que utiliza OAuth 2.0 como base para permitir que una aplicación compruebe la identidad de un usuario autenticado.
OIDC incorpora elementos como el ID Token, que contiene información sobre la autenticación e identidad del usuario, y puede utilizar el UserInfo Endpoint para obtener datos adicionales del usuario según los permisos concedidos.
¿Cómo funciona OpenID Connect?
OIDC añade una capa de identidad sobre OAuth 2.0 para que una aplicación pueda conocer y verificar información sobre el usuario autenticado.
OAuth gestiona el flujo
OpenID Connect utiliza los flujos y mecanismos de OAuth 2.0 para iniciar la interacción entre el cliente y el proveedor de identidad.
Se autentica al usuario
El usuario interactúa con el proveedor de identidad y realiza el proceso de autenticación que corresponda a la cuenta.
Se entrega información de identidad
Después del proceso, la aplicación puede recibir un ID Token y, según el flujo y permisos utilizados, consultar información adicional mediante UserInfo.
OAuth y OpenID Connect no cumplen exactamente la misma función
OAuth 2.0 está orientado principalmente a autorización, mientras que OpenID Connect añade un protocolo específico para identidad y autenticación.
Acceso delegado
OAuth permite que un cliente obtenga acceso limitado a recursos protegidos mediante tokens y alcances definidos.
Identidad del usuario
OpenID Connect incorpora mecanismos para comunicar y verificar información sobre la identidad del usuario autenticado.
Información de identidad
El ID Token permite transmitir información relacionada con la autenticación y la identidad del usuario al cliente.
Principales componentes de OpenID Connect
| Componente | Función | Ejemplo | Característica |
|---|---|---|---|
| OpenID Provider | Gestiona la identidad y autenticación. | Proveedor de identidad. | Autentica usuarios y emite tokens. |
| Client | Solicita autenticación. | Aplicación web o móvil. | Recibe tokens e información de identidad. |
| ID Token | Representa información de identidad. | JWT. | Contiene claims relacionados con el usuario y la autenticación. |
| UserInfo Endpoint | Entrega información del usuario. | Endpoint HTTPS. | Requiere un access token válido para solicitar datos. |
| Nonce | Vincula la solicitud con la respuesta. | Valor aleatorio. | Ayuda a detectar respuestas no asociadas con la solicitud iniciada. |
¿Qué es un OpenID Provider?
Un OpenID Provider o OP es el sistema que gestiona la autenticación del usuario y participa en la emisión de información de identidad y tokens definidos por OpenID Connect.
Autenticación
El proveedor de identidad presenta al usuario el proceso necesario para verificar sus credenciales y completar la autenticación.
Tokens
Después de una autenticación válida, el proveedor puede emitir los tokens correspondientes al flujo utilizado.
Identidad
El OpenID Provider puede proporcionar al cliente información verificable sobre la identidad del usuario autenticado.
¿Qué es un ID Token?
El ID Token es uno de los elementos centrales de OpenID Connect y contiene claims relacionados con la autenticación y la identidad del usuario.
Formato JWT
En OpenID Connect, el ID Token se representa como un JSON Web Token firmado que el cliente puede validar según las reglas del protocolo.
Claims
El token puede contener claims como el identificador del usuario, el emisor del token, la audiencia y datos temporales relacionados con la autenticación.
Validación
El cliente debe validar los elementos relevantes del ID Token antes de utilizarlo para aceptar la información de identidad proporcionada.
¿Qué es el UserInfo Endpoint?
El UserInfo Endpoint es un recurso protegido que puede proporcionar información adicional sobre el usuario autenticado.
Access Token
El cliente puede presentar un access token válido para solicitar información del usuario según el alcance concedido.
Información adicional
Los datos disponibles dependen de los claims y scopes configurados por el proveedor de identidad y aceptados durante el proceso.
No reemplaza al ID Token
El UserInfo Endpoint y el ID Token tienen funciones relacionadas, pero cumplen papeles diferentes dentro de OpenID Connect.
¿Qué son los scopes en OpenID Connect?
Los scopes indican el alcance solicitado durante el proceso de autorización y pueden determinar qué información del usuario puede solicitar el cliente.
OpenID
El scope openid identifica la solicitud como una operación de OpenID Connect y permite activar las funciones de identidad del protocolo.
Perfil
El scope profile puede solicitar determinados datos de perfil del usuario cuando el proveedor los ofrece y el acceso correspondiente es concedido.
Correo electrónico
El scope email puede solicitar información relacionada con la dirección de correo electrónico del usuario según la configuración del proveedor.
¿Cuál es la diferencia entre OpenID Connect y OAuth?
OAuth 2.0 y OpenID Connect están relacionados, pero fueron diseñados para objetivos diferentes.
OAuth 2.0
OAuth 2.0 proporciona un marco de autorización para que un cliente pueda obtener acceso limitado a recursos protegidos.
OpenID Connect
OpenID Connect utiliza OAuth 2.0 como base y añade una capa estandarizada para autenticar usuarios y comunicar información sobre su identidad.
ID Token
Una diferencia fundamental es que OIDC introduce el ID Token como mecanismo destinado a transportar información relacionada con la identidad y autenticación del usuario.
¿Cómo funciona el flujo Authorization Code en OIDC?
Authorization Code es uno de los flujos utilizados con OpenID Connect para que una aplicación obtenga información y tokens después de la autenticación del usuario.
Solicitud de autorización
El cliente redirige al usuario hacia el proveedor de identidad con los parámetros necesarios para iniciar el proceso.
Autenticación
El usuario se autentica ante el proveedor de identidad y, cuando corresponde, concede el acceso solicitado por la aplicación.
Intercambio del código
El cliente recibe un authorization code y lo intercambia en el token endpoint por los tokens correspondientes al flujo.
¿Qué es el nonce en OpenID Connect?
El nonce es un valor asociado con una solicitud de autenticación que permite al cliente vincular determinadas partes de la respuesta con la solicitud original.
Valor único
El cliente genera un valor que puede utilizarse para distinguir una solicitud concreta de otras solicitudes.
Presencia en el ID Token
Cuando corresponde, el nonce recibido en el ID Token puede compararse con el valor enviado originalmente para comprobar que coincidan.
Protección del flujo
La validación del nonce forma parte de las comprobaciones de seguridad que debe realizar el cliente en una implementación correcta de OpenID Connect.
¿Qué relación tiene PKCE con OpenID Connect?
PKCE puede utilizarse junto con el flujo Authorization Code para proteger el intercambio del código y vincularlo con la solicitud iniciada por el cliente.
Code Verifier
El cliente genera un code verifier y lo utiliza como parte de la protección del flujo.
Authorization Code
Después de recibir el código, el cliente presenta el code verifier al solicitar los tokens correspondientes.
Clientes públicos
PKCE es especialmente relevante en arquitecturas donde el cliente no puede mantener un secreto de cliente de forma confidencial.
¿Qué debe validar una aplicación al utilizar OIDC?
Una implementación de OpenID Connect no debería aceptar un ID Token sin realizar las comprobaciones necesarias definidas por el protocolo y la configuración del proveedor.
Emisor
El cliente debe comprobar que el token haya sido emitido por el OpenID Provider esperado.
Audiencia
También debe verificar que el token esté destinado al cliente correspondiente mediante los datos de audiencia.
Firma y tiempo
La aplicación debe validar la firma y las condiciones temporales relevantes del token antes de confiar en su contenido.
¿OpenID Connect permite Single Sign-On?
OpenID Connect puede formar parte de una arquitectura de Single Sign-On o SSO, donde una autenticación realizada ante un proveedor de identidad permite acceder a diferentes aplicaciones compatibles.
Un proveedor de identidad
Varias aplicaciones pueden utilizar un mismo proveedor de identidad para gestionar la autenticación de sus usuarios.
Aplicaciones independientes
Cada aplicación mantiene su propia configuración y permisos, aunque puede confiar en la identidad proporcionada por el mismo sistema de identidad.
No son sinónimos
OIDC es un protocolo de identidad, mientras que SSO describe una experiencia o arquitectura en la que una autenticación puede dar acceso a múltiples aplicaciones.
¿Qué se necesita para integrar OpenID Connect?
Una integración OIDC requiere registrar correctamente el cliente y definir los parámetros necesarios para que el proveedor y la aplicación puedan comunicarse.
Client ID
La aplicación necesita un identificador registrado ante el OpenID Provider para iniciar las solicitudes de autenticación.
Redirect URI
El proveedor debe conocer las direcciones autorizadas a las que puede devolver la respuesta del proceso de autenticación.
Scopes y endpoints
La aplicación debe utilizar los scopes, endpoints y parámetros correspondientes a la configuración del proveedor de identidad.
¿OpenID Connect garantiza una autenticación completamente segura?
No. OIDC proporciona un protocolo estandarizado, pero la seguridad final depende de su implementación, configuración y de la protección de las cuentas, tokens y sistemas involucrados.
Configuración
Redirect URI, clientes, scopes, almacenamiento de tokens y validaciones deben configurarse correctamente.
Proveedor de identidad
La seguridad del proceso también depende del proveedor de identidad y de las medidas aplicadas para proteger las cuentas de los usuarios.
Aplicación cliente
El cliente debe realizar correctamente las validaciones del protocolo y proteger las credenciales y tokens que recibe.
OpenID Connect: conceptos principales
| Concepto | Significado | Ejemplo | Función |
|---|---|---|---|
| OpenID Connect | Protocolo de identidad sobre OAuth 2.0. | Inicio de sesión mediante proveedor de identidad. | Autenticar usuarios y comunicar identidad. |
| ID Token | Token de identidad. | JWT firmado. | Transportar información sobre autenticación e identidad. |
| UserInfo | Endpoint de información del usuario. | Solicitud HTTPS con access token. | Obtener información adicional del usuario. |
| Nonce | Valor asociado con una solicitud. | Cadena aleatoria. | Vincular la respuesta con la solicitud iniciada. |
| OAuth 2.0 | Marco de autorización. | Access token y scopes. | Delegar acceso a recursos. |
Guías relacionadas sobre autenticación y autorización
Elige el tema que quieras profundizar:
Preguntas frecuentes sobre OpenID Connect
OpenID Connect es un protocolo de identidad construido sobre OAuth 2.0 que permite a una aplicación comprobar la identidad de un usuario autenticado.
Sirve para añadir autenticación de identidad a una arquitectura basada en OAuth 2.0 y permitir que una aplicación reciba información verificable sobre el usuario autenticado.
OAuth 2.0 es un marco de autorización, mientras que OpenID Connect utiliza OAuth 2.0 como base y añade mecanismos para autenticar usuarios y comunicar información de identidad.
Es un token de identidad utilizado por OpenID Connect para transportar información relacionada con la autenticación y la identidad del usuario.
Es un recurso protegido que puede proporcionar información adicional sobre el usuario autenticado utilizando un access token válido.
Es un valor asociado con una solicitud de autenticación que permite vincular determinadas partes de la respuesta con la solicitud original.
Sí. OpenID Connect utiliza OAuth 2.0 como base y añade mecanismos específicos para autenticación e identidad.
Sí. OpenID Connect puede formar parte de una arquitectura de Single Sign-On donde varias aplicaciones utilizan un mismo proveedor de identidad para autenticar usuarios.
¿Qué es OAuth?
Continúa aprendiendo sobre identidad y autorización y comprende cómo funciona OAuth 2.0 y su relación con OpenID Connect.
Ver guía →