¿Qué es SAML?
SAML (Security Assertion Markup Language) es un estándar basado en XML para transmitir información de autenticación y atributos de un usuario desde un proveedor de identidad (IdP) a un proveedor de servicio (SP). SAML V2.0 se convirtió en estándar OASIS el 15 de marzo de 2005. Se usa mucho para el inicio de sesión único (SSO) empresarial: el usuario inicia sesión una vez en el IdP, y el IdP responde por él ante cada aplicación con una aserción firmada.
Los dos roles
- Proveedor de identidad (IdP): autentica al usuario y emite aserciones. Es el sistema que guarda las cuentas y aplica reglas como la MFA. Forma parte del tema más amplio de la gestión de identidades y accesos.
- Proveedor de servicio (SP): la aplicación a la que el usuario quiere llegar. Consume la aserción y decide si concede el acceso.
Cómo funciona el flujo SAML (iniciado por el SP)
- El usuario abre el SP y elige iniciar sesión con SSO.
- El SP redirige el navegador al IdP con una solicitud de autenticación (AuthnRequest).
- El IdP autentica al usuario o reutiliza una sesión existente del IdP.
- El IdP genera una respuesta SAML con una aserción firmada sobre el usuario.
- El navegador entrega la respuesta al endpoint Assertion Consumer Service (ACS) del SP, normalmente con un HTTP POST.
- El SP valida la firma y las condiciones y crea su propia sesión local.
En un flujo iniciado por el IdP, el usuario empieza en el IdP, por ejemplo desde un panel de aplicaciones, y el IdP envía una aserción sin AuthnRequest. La descripción técnica de OASIS explica ambos. Los mensajes viajan mediante bindings como HTTP Redirect, HTTP POST y HTTP Artifact.
Qué contiene una aserción
Una aserción lleva un sujeto, condiciones y declaraciones. Lo habitual es:
- Emisor y firma: quién la emitió y la prueba de que nada se ha modificado.
- Sujeto: de quién habla la aserción, a menudo como NameID, por ejemplo un correo electrónico o un identificador opaco.
- Condiciones: una ventana de validez (
NotBeforeyNotOnOrAfter) y unaAudienceRestrictionque nombra al proveedor de servicio al que va dirigida. - Declaración de autenticación: cómo y cuándo se autenticó el usuario.
- Declaración de atributos: datos como nombre, correo o pertenencia a grupos que el SP puede usar para autorizar.
Ejemplo
Una empleada abre la herramienta de proyectos de la empresa. La herramienta redirige al IdP corporativo, ella aprueba una notificación push y el IdP devuelve una aserción con su correo, la herramienta de proyectos como audiencia y una ventana de validez de unos minutos. La herramienta comprueba la firma con el certificado del IdP que tiene guardado, confirma que la audiencia es ella misma, revisa la ventana de tiempo, asigna el atributo de grupo a un rol y deja entrar a la empleada.
Errores comunes con SAML
- Desfase de reloj. Si los relojes del IdP y del SP difieren más que la tolerancia, falla la comprobación de la ventana de validez. Mantén ambos sincronizados con NTP.
- Certificados de firma caducados. Si el certificado del IdP caduca o se rota y el SP conserva el antiguo, todos los inicios de sesión SSO fallan a la vez. Controla las fechas de caducidad.
- Desajuste de audiencia o ACS. El entity ID y la URL de ACS configurados en el IdP deben coincidir exactamente con lo que espera el SP.
- Formato del NameID. Si el IdP envía un identificador en un formato distinto al que usa el SP para buscar, los usuarios no se encuentran o se duplican.
- Mapeo de grupos. Un nombre o valor de atributo incorrecto deja a los usuarios sin su rol.
- Validación de firma débil o sin protección contra repetición. Usa una biblioteca SAML mantenida, verifica la firma sobre el elemento correcto y rechaza las aserciones ya usadas. La especificación define además una condición
OneTimeUse.
SAML, OAuth 2.0 y OpenID Connect
- SAML 2.0: mensajes XML, pensado para SSO en el navegador entre organizaciones y aplicaciones.
- OAuth 2.0: un marco de autorización que permite a una app acceder a recursos en nombre de un usuario. Por sí solo no es un protocolo de inicio de sesión. Los tokens como el bearer token son habituales en las llamadas a APIs.
- OpenID Connect: una capa de identidad sobre OAuth 2.0 que usa JSON y JWT.
SAML, APIs y pruebas
SAML es un protocolo de redirección por navegador, así que protege la página de inicio de sesión y no las llamadas a APIs. Las APIs de un producto protegido con SSO suelen aceptar un token, y eso es lo que se prueba: consulta seguridad de APIs y la guía de pruebas de carga con OAuth2. La monitorización de APIs de LoadFocus puede autenticar las APIs que comprueba con bearer tokens de OAuth. LoadFocus no ofrece inicio de sesión único con SAML ni OIDC: se entra en LoadFocus con correo y contraseña o con Google.
Preguntas frecuentes: SAML
¿Qué significa SAML?
Security Assertion Markup Language. Una aserción es una declaración sobre un usuario que la parte emisora da por cierta, por ejemplo quién es y cómo inició sesión.
¿Cuál es la diferencia entre SAML y OAuth?
SAML le dice a una aplicación quién es el usuario. OAuth 2.0 permite que una aplicación actúe en nombre de un usuario. Resuelven problemas distintos, y OpenID Connect añade la identidad sobre OAuth.
¿Por qué SAML usa XML?
SAML 2.0 se finalizó en 2005, cuando XML era el formato habitual para este tipo de intercambio. Protocolos más nuevos como OpenID Connect usan JSON.
¿Es seguro SAML?
El protocolo está bien especificado, pero la mayoría de los fallos vienen de la implementación: comprobaciones de firma débiles, falta de comprobaciones de audiencia o de tiempo y ausencia de protección contra repetición. Usa una biblioteca mantenida y no analices el XML por tu cuenta.
¿Cómo depuro un inicio de sesión SAML que falla?
Captura la respuesta SAML en el navegador, decodifica el contenido en base64 y lee el emisor, la audiencia, la ventana de validez y el NameID. Compáralos con la configuración del SP y revisa ambos relojes. Los problemas de firma, audiencia, reloj y certificado explican la mayoría de los fallos.
¿LoadFocus admite inicio de sesión único con SAML?
No. Se entra en LoadFocus con correo y contraseña o con Google. LoadFocus puede probar y monitorizar aplicaciones y APIs protegidas con SAML usando el token que esas APIs aceptan.
Términos relacionados
Herramientas LoadFocus relacionadas
Lleva este concepto a la práctica con LoadFocus, la misma plataforma que potencia todo lo que acabas de leer.