SAML vs OIDC
SAML y OIDC son los dos protocolos de autenticación más populares utilizados en la industria de SSO. Este artículo comparará SAML y OIDC en términos de su arquitectura y casos de uso.
¿Qué es SAML?
SAML (Security Assertion Markup Language) es un estándar abierto basado en XML para intercambiar datos de autenticación y autorización entre diferentes partes, en particular, entre un proveedor de identidad (IdP) y un proveedor de servicios (SP). Permite SSO (inicio de sesión único) basado en la web, permitiendo a los usuarios autenticarse una vez para acceder a múltiples aplicaciones. SAML es un protocolo maduro que ha existido durante mucho tiempo y es ampliamente adoptado por las empresas. Algunas de las plataformas SaaS más populares como Salesforce, Workday y Microsoft Azure AD, todas soportan SAML SSO.
Componentes de SAML
- Proveedor de identidad (IdP): La entidad que autentica a los usuarios y proporciona información de identidad a los proveedores de servicios.
- Proveedor de servicios (SP): La entidad que proporciona servicios a los usuarios y confía en el proveedor de identidad para autenticar a los usuarios.
- Aserciones SAML: Documentos basados en XML que llevan los detalles de autenticación y autorización del usuario. Incluyendo, declaraciones de autenticación, declaraciones de atributos y declaraciones de decisiones de autorización.
- Protocolo SAML: Define el formato de los mensajes y las reglas para el intercambio de aserciones SAML entre el IdP y SP.
- Uniones SAML: Define cómo se transportan los mensajes SAML sobre diferentes protocolos de comunicación como HTTP POST, HTTP Redirect, etc.
- Metadatos SAML: Documentos basados en XML que contienen la información de configuración del IdP y SP. Incluye la clave pública, los puntos finales y las uniones soportadas que se utilizan para establecer confianza entre el IdP y SP.
- Punto final de inicio de sesión único: El punto final donde el SP redirige al usuario para autenticar con el IdP.
- URL del servicio de consumidor de aserciones (ACS): El punto final donde el IdP envía la aserción SAML después de una autenticación exitosa.
¿Cómo funciona SAML?
- Flujo de SSO iniciado por SP:
- Flujo de SSO iniciado por IdP:
Ventajas de SAML
- Maduro y ampliamente adoptado: SAML es un protocolo maduro que ha existido durante mucho tiempo y es ampliamente adoptado por empresas.
- Estandarizado: SAML es un estándar abierto mantenido por OASIS, lo que garantiza la interoperabilidad entre diferentes proveedores.
- SSO: SAML permite SSO basado en la web permitiendo a los usuarios autenticarse una vez para acceder a múltiples aplicaciones.
- Gestión centralizada de usuarios: SAML permite a las organizaciones gestionar identidades de usuarios de forma centralizada y hacer cumplir políticas de seguridad de manera consistente.
Desafíos de SAML
- Complejidad: SAML es un protocolo complejo que requiere un profundo entendimiento de XML y conceptos de seguridad.
- Rendimiento: Los mensajes SAML están basados en XML y pueden ser grandes. La entrega y el análisis XML pueden ser más lentos en comparación con formatos de token como JSON Web Token (JWT).
- Estándar desactualizado: SAML es un estándar más antiguo en comparación con OIDC y se considera menos seguro.
- Dependencia del proveedor: SAML es un protocolo específico del proveedor, y cambiar entre proveedores puede ser desafiante.
¿Qué es OIDC?
OIDC (OpenID Connect) es una capa de identidad construida sobre el protocolo OAuth 2.0. Al igual que SAML, OIDC también se utiliza para intercambiar datos de autenticación y autorización entre IdP y SP.
En comparación con SAML, OIDC es un protocolo más moderno y ligero que está ganando popularidad para aplicaciones web y móviles modernas. OIDC utiliza JWT para transmitir información de identidad, lo cual es más compacto y fácil de trabajar en comparación con las aserciones SAML basadas en XML. Es especialmente popular para aplicaciones orientadas al consumidor y seguridad de API.
Componentes de OIDC
- Proveedor de identidad (IdP): La entidad que autentica a los usuarios y proporciona información de identidad a los proveedores de servicios.
- Parte confiable (RP):La entidad que proporciona servicios a los usuarios y confía en el proveedor de identidad para autenticar a los usuarios. Por ejemplo, aplicaciones web, aplicaciones móviles o APIs.
- Tokens OIDC: Tokens que llevan la información de identidad del usuario.
- Token de ID: Token en formato JWT que contiene la información de identidad del usuario.
- Token de acceso: Token en formato JWT u opaco que otorga acceso a recursos protegidos.
- Token de actualización: Token utilizado para obtener un nuevo token de acceso sin requerir que el usuario se re-autentique. Proporciona una autorización de larga duración fuera de línea al RP.
- Puntos finales de OIDC: Puntos finales utilizados para la autenticación e intercambio de tokens. Algunos puntos finales más importantes son:
- Punto final de descubrimiento: Donde el RP puede recuperar la información de configuración pública de OIDC del IdP.
- Punto final de autorización: Donde el RP envía la solicitud de autenticación.
- Punto final de token: Donde el RP solicita al servidor de autorización los tokens.
- Punto final de información del usuario: Donde el RP puede recuperar la información del perfil del usuario.
- Alcances: OIDC define un conjunto de alcances estándar que definen los derechos de acceso otorgados al RP. Tales como
openid
,profile
,email
,address
, etc.
¿Cómo funciona OIDC?
OIDC proporciona múltiples flujos que están diseñados explícitamente para diferentes casos de uso. Aquí están los dos flujos OIDC más comunes:
- Flujo de código de autorización:
El flujo de código de autorización es el flujo más común utilizado en OIDC para aplicaciones orientadas al consumidor.
- Flujo de credenciales de cliente:
El flujo de credenciales de cliente puede ser utilizado para autenticación no basada en usuario (machine-to-machine).
Ventajas de OIDC
- Moderno y ligero: OIDC es un protocolo contemporáneo que emplea tokens JWT basados en JSON, que son más compactos y fáciles de manejar en comparación con las aserciones SAML basadas en XML.
- Aplicaciones orientadas al consumidor: OIDC es particularmente popular para aplicaciones orientadas al consumidor y seguridad de API.
- Interoperabilidad: Construido sobre OAuth 2.0, OIDC es compatible con diversas plataformas, dispositivos y entornos.
- Seguridad: OIDC ofrece un método más seguro para la autenticación de usuarios y la protección de API. Incorpora varias características de seguridad modernas, como introspección de tokens, revocación de tokens, Proof Key for Code Exchange (PKCE), y soporta diferentes flujos de autenticación adaptados a diversas necesidades de seguridad.
- Facilidad de uso: OIDC es más sencillo de implementar y trabajar con él en comparación con SAML. Es más amigable para desarrolladores y tiene bibliotecas y SDKs comprensivos para múltiples lenguajes de programación y plataformas.
Desafíos de OIDC
- Gestión de tokens: OIDC se basa en tokens para la autenticación y autorización. Requiere prácticas adecuadas de gestión de tokens para garantizar la seguridad.
- Complejidad: Aunque OIDC es simple para configuraciones básicas, debido a su naturaleza flexible, puede añadir complejidad al implementar personalizaciones avanzadas. Por ejemplo, reclamaciones personalizadas, y control de acceso basado en roles (RBAC), etc.
- Adopción: OIDC todavía es relativamente nuevo en comparación con SAML, especialmente en el ámbito empresarial. Algunos sistemas heredados pueden seguir dependiendo de SAML para fines de SSO.
Comparación SAML vs OIDC
Aspecto | SAML | OIDC |
---|---|---|
Formato de token | Aserciones SAML basadas en XML | Tokens JWT basados en JSON |
Caso de uso principal | SSO empresarial, integraciones B2B | Aplicaciones orientadas al consumidor, seguridad de API |
Facilidad de uso | Complejo, requiere un profundo conocimiento de XML | Simple, basado en JSON, fácil de implementar |
Adopción | Amplia adopción en empresas | Cada vez más popular para aplicaciones modernas |
Seguridad | Maduro pero considerado menos seguro | Moderno, y más seguro |
Flexibilidad | Limitada, diseñada para casos de uso de SSO | Flexible, soporta varios casos de uso |
Futuro de SAML y OIDC
Tanto SAML como OIDC son ampliamente utilizados para propósitos de autenticación y autorización.
SAML sigue siendo una piedra angular para SSO empresarial e integraciones B2B. Su robusto soporte para la gestión de identidad federada y su probada trayectoria aseguran su relevancia continua, particularmente para sistemas heredados y organizaciones a gran escala.
OIDC, por otro lado, continúa evolucionando, impulsado por la demanda de autenticación segura y escalable en aplicaciones modernas. Su naturaleza ligera y alineación con APIs y microservicios lo convierten en una piedra angular para arquitecturas nativas de la nube y distribuidas. Con el auge de la autenticación sin contraseña, biometría y autenticación multifactor (MFA), se espera que OIDC se integre perfectamente con tecnologías emergentes, asegurando su relevancia en los próximos años.