¿Cuáles son las diferencias entre SAML y OIDC?
En este artículo, proporcionamos una visión general de los protocolos SAML y OIDC, junto con sus flujos de autenticación típicos. Comparamos las diferencias distintas, pros y contras de cada protocolo. Además, basándonos en posibles escenarios de usuario, ofrecemos orientación sobre cómo elegir entre estos dos protocolos.
OpenID Connect (OIDC) y Security Assertion Markup Language (SAML) son protocolos de autenticación que permiten a los Proveedores de Identidad (IdPs) implementar la autenticación de usuarios y el control de acceso. Cada protocolo define su propio mecanismo para mantener la identidad de los usuarios autenticados, que luego se utiliza para otorgar o denegar el acceso a aplicaciones protegidas.
¿Qué son SAML y OIDC?
Los IdPs mantienen bases de datos de información de identidad de usuarios. Los Proveedores de Servicios (SPs) dependen de esta información para autenticar usuarios, a veces permitiendo que una única autenticación se use en múltiples aplicaciones (inicio de sesión único). OIDC y SAML son estándares que definen cómo fluye esta información relacionada con la identidad de los usuarios entre estas dos partes. Su objetivo final es el mismo: la autenticación de usuarios. Sin embargo, los enfoques fundamentales que adoptan para lograr este objetivo difieren.
SAML
SAML 2.0, desde 2005, es la versión actual del estándar. Utiliza XML para dar formato a la información de identidad, solicitudes y respuestas. XML es un estándar maduro para formatear documentos de manera que sean comprensibles tanto por humanos como por computadoras. Para transmitir o recibir información codificada en XML, utiliza solicitudes básicas de SOAP o HTTP. Definido por el protocolo SAML, el servicio que solicita información de identidad es el Proveedor de Servicios (SP).
Antes de que presentemos el proceso típico de autenticación SAML, necesitamos entender los elementos en los que se basa la autenticación SAML. Antes de que IdP y SP puedan reconocerse mutuamente y completar el proceso de autenticación, necesitan "intercambiar" la información necesaria, normalmente lograda mediante metadatos formateados en XML. La información intercambiada incluye:
- Claves públicas, con IdP y SP generando sus propios pares de claves privadas y públicas e intercambiándolas para firmar o encriptar comunicaciones. Con los avances en la seguridad de la comunicación en red, la mayoría de los escenarios ahora solo requieren la firma de solicitudes, omitiendo el paso de encriptación.
- Puntos de conexión, utilizados para que el SP envíe solicitudes de autenticación SAML al IdP y para que el SP reciba aserciones SAML en respuesta a las solicitudes de autenticación del IdP.
- Formatos de atributos XML compatibles, utilizados por el IdP para transmitir la información de usuario requerida al SP después de completar la autenticación.
Una vez que IdP y SP son conscientes de la información antes mencionada, pueden proceder con el proceso de autorización (un flujo típico de autenticación iniciado por SP):
OIDC
OIDC es un protocolo contemporáneo que mejora el marco de OAuth 2.0. Emplea Tokens Web basados en JSON (JWT) para construir cargas útiles de datos. Los JWTs, una norma industrial establecida, establecen directrices para el intercambio seguro y la representación de declaraciones entre entidades. Estas declaraciones, esencialmente datos de usuario encriptados, son cruciales para la verificación y gestión de identidades. OIDC principalmente utiliza el ubicuo HTTPS para la transmisión de datos.
Como es ampliamente reconocido, el protocolo OIDC admite una variedad de flujos diferentes, incluyendo el flujo del código de autorización, el flujo implícito y el flujo híbrido. En el siguiente ejemplo, recorreremos el más seguro y típico de estos: el flujo del código de autorización. Este es también el flujo utilizado por Logto.
Aspectos distintivos de OIDC y SAML
- Dado su desarrollo más reciente, OIDC está mejor adaptado para la autenticación de aplicaciones modernas en comparación con el estándar SAML más antiguo.
- Históricamente, SAML antecede a OIDC y ha sido integrado en numerosos sistemas corporativos establecidos.
- En contraste con los documentos XML más voluminosos de SAML, los JWTs de OIDC son compactos y más fáciles de procesar.
- Configurar OIDC es generalmente más sencillo que SAML.
- Una característica clave de OIDC es su definición de "alcances", que permiten a los IdPs gestionar una variedad de permisos. Las aplicaciones pueden solicitar permisos específicos de los IdPs, que son otorgados tras la aprobación del usuario. Este atributo de OIDC ofrece a los IdPs un control granular sobre los permisos.
¿Cómo debería uno elegir entre OIDC y SAML?
Tanto OIDC como SAML son sistemas de autenticación robustos, cada uno con sus fortalezas únicas. La elección depende de los requisitos específicos de su organización.
- Para una implementación rápida y eficiente de una plataforma de identidad, OIDC es preferible sobre SAML. Implementar OIDC es más sencillo, evitando la compleja gestión de XML que SAML requiere para el análisis de metadatos, el procesamiento de solicitudes de autenticación y el análisis de aserciones SAML.
- OIDC es ideal para entornos con amplias interacciones API y mecanismos de permisos sofisticados, ofreciendo un control más adaptable y eficiente sobre los permisos y una experiencia de desarrollo superior.
- Al integrarse con sistemas establecidos que son basados en SAML, elegir SAML garantiza una interoperabilidad de sistemas más fluida y reduce el esfuerzo necesario para unir diferentes protocolos.
¿Existen buenas soluciones disponibles en el mercado?
Logto, una solución de identidad popular entre los desarrolladores, ha introducido recientemente la funcionalidad SSO empresarial. Ofrece soporte para ambos protocolos SAML y OIDC, junto con integraciones listas para usar para IdPs de primera línea como Google Workspace y Microsoft Entra ID (anteriormente Azure AD). Con Logto, puedes evitar las complejidades de implementar SSO por tu cuenta. Unos pocos pasos de configuración simples habilitan el soporte SSO en tu sistema de identidad, permitiéndote seleccionar el protocolo adecuado para satisfacer las necesidades de tu negocio.