¿Qué es el lenguaje de marcado de aserciones de seguridad (SAML)?
- Glosario IAM
- ¿Qué es el lenguaje de marcado de aserciones de seguridad (SAML)?
El lenguaje de marcado de aserciones de seguridad (SAML) es un estándar abierto basado en XML que permite que un proveedor de identidad (IdP) transmita de forma segura los datos de autenticación y autorización de un usuario a un proveedor de servicios (SP). En términos simples, SAML es una de las principales tecnologías que permite a los usuarios iniciar sesión una sola vez y acceder a varias aplicaciones sin volver a ingresar sus credenciales.
¿Para qué se usa SAML?
SAML suele estar presente siempre que los usuarios necesitan acceso seguro y optimizado a varias aplicaciones. Los casos de uso más comunes son:
- Inicio de sesión único (SSO): un solo inicio de sesión otorga acceso a varias aplicaciones, lo que elimina la necesidad de volver a ingresar las credenciales en cada servicio.
- Identidad federada: SAML permite que una organización confíe en identidades emitidas por una empresa asociada o matriz, de modo que los usuarios de un dominio de confianza obtienen acceso sin necesidad de cuentas independientes.
- Gestión de acceso empresarial: los equipos de TI obtienen control centralizado sobre quién puede acceder a cada aplicación al dirigir los inicios de sesión a través de un único IdP, lo que ayuda a aplicar políticas coherentes, como la autenticación multifactor (MFA), en todas partes a la vez.
En cada caso de uso, el IdP emite una aserción XML firmada que viaja al SP a través del navegador del usuario, lo cual es lo que permite que los datos de autenticación se transfieran de forma segura sin que el usuario deba volver a iniciar sesión.
Componentes clave de SAML
Los intercambios de SAML generalmente implican la colaboración de varias partes. Estos son algunos términos fundamentales que facilitan el seguimiento del proceso de autenticación:
- Principal (sujeto): el usuario que está siendo autenticado, principalmente una persona que intenta acceder a una aplicación específica.
- Proveedor de identidad (IdP): el sistema que verifica al usuario y emite la aserción, como Microsoft Entra ID u Okta, para permitir que se realice el inicio de sesión.
- Proveedor de servicios (SP): la aplicación o sitio web al que el usuario desea acceder, que confía en el IdP para confirmar la identidad del usuario en lugar de administrar las credenciales de inicio de sesión.
- Aserción SAML: la declaración XML firmada que el IdP envía al SP, que contiene los datos de identidad y autorización del usuario (ver más abajo).
- Metadatos: la configuración que ambas partes intercambian de antemano (endpoints, certificados, etc.) para demostrar que el IdP y el SP saben cómo confiar entre sí y comunicarse.
- Certificado de firma: el certificado digital que contiene la clave pública que el SP utiliza para verificar la firma de la aserción, lo que establece confianza entre el SP y el IdP para confirmar que la aserción no fue alterada durante la transmisión.
¿Cómo funciona la autenticación SAML?
La autenticación SAML funciona transmitiendo una aserción firmada del IdP al SP, lo que confirma que el usuario es quien dice ser. El flujo iniciado por el SP es la versión más común de la autenticación SAML y comienza cuando el usuario accede al sitio web o la aplicación que desea usar. Si la aplicación depende de un IdP externo para el inicio de sesión, redirige el navegador del usuario al IdP con una solicitud de autenticación SAML. El IdP entonces verifica las credenciales del usuario para autenticarlo; si el usuario ya tiene una sesión activa, se omite este paso. Una vez que el IdP queda conforme, genera una aserción firmada y la envía de vuelta a través del navegador al SP. Por último, el SP valida la firma de la aserción, confía en ella y permite el acceso del usuario sin necesidad de un inicio de sesión independiente. Si bien la autenticación iniciada por el SP es la más común en SAML, también existe un flujo iniciado por el IdP, en el que el usuario comienza en el IdP, por ejemplo, al hacer clic en un ícono de aplicación en el panel de la empresa.
¿Qué es una aserción SAML?
Una aserción SAML es el documento XML firmado que el IdP envía al SP para dar fe de un usuario. Cada aserción puede contener una o varias declaraciones, que son los datos reales que el SP utiliza para decidir si se debe otorgar acceso al usuario. Existen tres tipos de declaraciones:
- Las declaraciones de autenticación confirman quién es el usuario, cuándo inició sesión y cómo (es decir, si se usó MFA).
- Las declaraciones de atributos contienen información adicional sobre el usuario, como su rol o departamento. El SP puede usar estos atributos para decidir qué puede ver o hacer el usuario.
- Las declaraciones de decisión de autorización indican si se otorga al usuario acceso a un recurso determinado. Este tipo de declaración se usa con poca frecuencia, ya que la autorización más compleja suele gestionarse mediante el lenguaje extensible de marcado de control de acceso (XACML).
SAML frente a otros estándares de autenticación
SAML suele asociarse con otros protocolos de identidad y acceso que cumplen funciones relacionadas, pero distintas. El propósito principal de SAML es gestionar la autenticación, es decir, comprobar quién es un usuario y si tiene permitido el acceso a un sitio web o aplicación. Su enfoque en la autenticación es lo que lo distingue de OAuth, un protocolo de autorización que otorga a una aplicación permiso para acceder a recursos específicos. SAML y OAuth son complementarios y no competidores, ya que SAML confirma la identidad y OAuth otorga el acceso.
OpenID Connect (OIDC) es más similar a SAML, ya que ambos autentican usuarios y habilitan el SSO. Sin embargo, OIDC es una capa de autenticación construida sobre OAuth que utiliza tokens web JSON (JWT) adecuados para aplicaciones web y móviles modernas, mientras que el enfoque basado en XML de SAML aún se usa ampliamente para el SSO web empresarial, aunque OIDC es cada vez más el estándar predeterminado para las aplicaciones nuevas. En comparación, el protocolo ligero de acceso a directorios (LDAP) es un protocolo de directorio más antiguo que es anterior a la nube y está diseñado para entornos locales (on-premises). En lugar de competir con SAML, LDAP suele operar detrás de un IdP de SAML como la fuente de las credenciales de usuario.
| SAML | OAuth | OIDC | LDAP | |
|---|---|---|---|---|
| Qué hace | Autenticación y SSO | Autorización | Autenticación (basada en OAuth) | Acceso a directorios |
| Formato | Aserción XML firmada | Token de acceso | JWT | Consultas de directorio |
| Mejor opción para | SSO web para aplicaciones empresariales | Acceso delegado a API | Aplicaciones móviles y nativas de la nube | Directorios locales (on-premises) |
SAML
OAuth
OIDC
LDAP
Ventajas y desventajas de SAML
SAML ofrece simultáneamente numerosas ventajas y compensaciones que vale la pena comprender antes de adoptarlo.
Ventajas de SAML
El mayor beneficio de SAML es que minimiza la cantidad de contraseñas que los usuarios deben gestionar. Con un solo inicio de sesión que otorga acceso a varias aplicaciones, los usuarios tienen menos credenciales que recordar, lo que reduce la superficie de ataque y disminuye el riesgo de robo de credenciales. Debido a que la autenticación se gestiona a través de un único IdP, las organizaciones también obtienen control centralizado de políticas; los equipos de seguridad pueden aplicar la MFA de manera uniforme en todas las aplicaciones conectadas desde un solo lugar. Esa centralización da sus frutos, ya que reduce los costos de la mesa de ayuda al disminuir las solicitudes de restablecimiento de contraseñas que suelen abrumar al soporte de TI.
Desventajas de SAML
Las ventajas de SAML solo se manifiestan cuando el lenguaje de marcado está configurado correctamente. Depende de XML Signature y XML Encryption para la integridad y privacidad de los mensajes, junto con TLS para la seguridad del transporte. Una de las vulnerabilidades más comunes de SAML está relacionada con una configuración incorrecta, como no validar correctamente las firmas. Su modelo basado en XML es menos flexible que los formatos de token modernos, lo que hace que SAML sea difícil de implementar en aplicaciones móviles y de página única.