0Pricing
Cyber Security Academy · Lección

SAML y federación

Inicio de sesión único empresarial.

SAML y federación es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.

Qué es SAML

SAML (Security Assertion Markup Language) es un estándar basado en XML para intercambiar datos de autenticación y autorización, predominante en el SSO empresarial.

  • Permite que un proveedor corporativo de identidad responda por un usuario ante muchas aplicaciones.
  • SAML 2.0 es anterior a OIDC y sigue estando profundamente implantado en la identidad B2B y de la fuerza laboral.

Comprender SAML es esencial para proteger la federación empresarial, donde un único fallo de confianza expone todas las aplicaciones conectadas.

Roles del IdP y el SP

La federación SAML tiene dos partes principales.

  • El Proveedor de identidad (IdP) autentica al usuario y emite aserciones (Okta, Entra ID, Ping).
  • El Proveedor de servicios (SP) es la aplicación que confía en el IdP y concede el acceso.

La confianza se establece fuera de banda mediante el intercambio de metadatos, incluidos los certificados de firma y las URL de los endpoints.

IdP  -> authenticates user, signs assertion
SP   -> consumes assertion, grants access
Metadata exchange establishes trust (certs, ACS URLs)

La aserción SAML

El artefacto central es la aserción, un documento XML que declara que el IdP autenticó a un sujeto.

  • Subject identifica al usuario (NameID).
  • Conditions define la ventana de validez y la audiencia prevista.
  • AuthnStatement registra cómo y cuándo tuvo lugar la autenticación.
  • AttributeStatement contiene roles, correo electrónico y claims de grupos.
<saml:Assertion>
  <saml:Subject><saml:NameID>user@corp</saml:NameID></saml:Subject>
  <saml:Conditions NotOnOrAfter="2026-06-04T10:05:00Z"
     AudienceRestriction="https://sp.example"/>
  <saml:AuthnStatement .../>
</saml:Assertion>

Flujo de SSO iniciado por el SP

El patrón más común es el SSO iniciado por el SP.

  • El usuario accede al SP, que genera un AuthnRequest y redirige al IdP.
  • El IdP autentica al usuario y envía mediante POST una Response firmada al servicio consumidor de aserciones (ACS) del SP.
  • El SP valida la aserción y crea una sesión local.
1. SP -> AuthnRequest -> IdP (redirect)
2. user authenticates at IdP
3. IdP -> signed SAMLResponse -> SP ACS (HTTP POST)
4. SP validates -> session

Las firmas XML anclan la confianza

La seguridad de SAML se basa en las firmas digitales XML. El IdP firma la aserción o la respuesta, o ambas, con su clave privada; el SP verifica la firma con el certificado de confianza.

  • Firme la aserción en sí, no solo la respuesta externa.
  • Verifique la firma con un certificado del IdP fijado a partir de los metadatos, no con uno incrustado en el mensaje.

La mayoría de los ataques contra SAML se dirigen a la lógica de validación de firmas.

XML Signature Wrapping (XSW)

XML Signature Wrapping es la clase de ataques contra firmas propia de SAML. El atacante conserva un elemento firmado válidamente, pero añade una segunda aserción falsificada que la lógica de la aplicación termina leyendo.

  • La firma sigue verificándose correctamente contra el fragmento original.
  • Sin embargo, la lógica de negocio procesa la aserción inyectada y sin firma.

Mitigación: utilice una biblioteca SAML reforzada, valide que el elemento firmado sea el que se consume y rechace los documentos con varias aserciones o aserciones ambiguas.

Document after XSW:
  <Response>
    <Assertion id="evil">attacker claims</Assertion>  // read by app
    <Assertion id="orig" SIGNED>real user</Assertion>  // sig valid here
  </Response>

Restricciones de audiencia y destinatario

Una aserción debe estar vinculada al SP previsto. SAML proporciona restricciones explícitas.

  • AudienceRestriction identifica el ID de entidad del SP para el que es válida la aserción.
  • Recipient en SubjectConfirmation debe coincidir con la URL del ACS.

El SP debe hacer cumplir estas restricciones. Omitir la comprobación de audiencia permite reproducir en otra aplicación una aserción generada para una aplicación distinta.

Defensas frente a la reproducción y el tiempo

Las aserciones son credenciales de corta duración y de un solo uso. Los SP deben imponerlo.

  • Respete NotBefore y NotOnOrAfter con un margen de desfase de reloj reducido.
  • Realice un seguimiento del ID de la aserción y rechace cualquier reutilización dentro de la ventana de validez.
  • Exija TLS en el endpoint del ACS.

Sin seguimiento de la reutilización, una aserción capturada puede enviarse de nuevo antes de que caduque.

SP checks:
  now in [NotBefore, NotOnOrAfter]  (+- small skew)
  assertion.ID not seen before -> store + reject reuse

Federación y cadenas de confianza

La federación permite escalar el SSO entre organizaciones, a veces mediante hubs o brokers que traducen entre protocolos.

  • Cada enlace de confianza es un posible punto débil; un IdP comprometido suplanta a todos los usuarios.
  • Los brokers de identidad pueden conectar SAML y OIDC, lo que requiere asignar cuidadosamente los claims.

Aplique el principio de mínimo privilegio al mapeo de atributos y supervise la aparición inesperada de nuevos registros de SP.

Debilidades comunes de SAML

Modos de fallo recurrentes de SAML que conviene auditar:

  • La firma no se verifica, o se firma la respuesta pero no la aserción.
  • Vulnerabilidad frente a XML Signature Wrapping.
  • Faltan comprobaciones de audiencia/destinatario.
  • No hay protección contra repeticiones o las ventanas de validez son demasiado largas.
  • Procesamiento de XML External Entity (XXE) en el SP.
  • Se confía en el certificado incluido en el mensaje en lugar de utilizar metadatos fijados.
Disable external entities in the XML parser:
  parser.setFeature(
    "http://apache.org/xml/features/disallow-doctype-decl", true)

SAML frente a OIDC

Ambos proporcionan SSO, pero su diseño es diferente.

  • SAML: XML, enlaces POST/redirección del navegador, predominante en entornos empresariales y laborales, con herramientas maduras.
  • OIDC: JSON/JWT, compatible con REST y más adecuado para aplicaciones móviles y SPA.

Muchas organizaciones utilizan ambos. El personal responsable de la seguridad debe conocer las reglas de validación de aserciones del protocolo que utilice cada aplicación, ya que la superficie de ataque es diferente.

Comprobación rápida: cómo neutralizar XSW

Seleccione la mejor defensa para el ataque descrito.

Repaso: SAML y federación

Ideas clave:

  • SAML es un sistema de SSO empresarial basado en XML entre un IdP y un SP, mediante aserciones firmadas.
  • La seguridad depende de una correcta validación de firmas XML frente a un certificado fijado.
  • Protéjase contra XML Signature Wrapping, las repeticiones y XXE.
  • Imponga siempre restricciones de audiencia/destinatario y ventanas de validez.
  • La federación amplía la confianza, pero multiplica el radio de impacto de un IdP comprometido.

Preguntas frecuentes

¿La lección «SAML y federación» es gratis?

Sí — el texto completo de «SAML y federación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.

¿Qué aprenderé en «SAML y federación»?

Inicio de sesión único empresarial. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cyber Security Academy?

No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «SAML y federación»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?

Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Flujos de OAuth 2.0
  2. OpenID Connect (OIDC)
  3. SAML y federación
  4. Ataques a tokens y refuerzo de seguridad
← Volver a Cyber Security Academy