SAML

Conceptos Fundamentales

  • autenticacion
  • Protocolos
  • XML
  • SAML (Security Assertion Markup Language) es un estándar basado en XML utilizado para implementar SSO Single Sign-On en entornos corporativos y aplicaciones web.
  • Permite que un Identity Provider (IdP) autentique al usuario y que un Service Provider (SP) confíe en esa autenticación sin gestionar credenciales directamente.

Características Clave

  • Estándar maduro ampliamente soportado.
  • Ideal para federación entre organizaciones.
  • Utiliza Aserciones firmadas digitalmente para garantizar integridad y autenticidad.
  • Funciona principalmente mediante redirecciones HTTP y mensajes XML firmados.
  • Independiente de plataforma y de lenguajes.

Componentes de SAML

Aserciones

  • Incluyen información sobre:
    • Identidad del usuario.
    • Atributos (correo, roles, grupos…).
    • Condiciones de validez (audiencia, timestamps).
  • Son firmadas por el IdP para garantizar integridad.

IdP (Identity Provider)

  • Responsable de autenticar al usuario (contraseña, MFA, etc.).
  • Emite aserciones SAML.
  • Ejemplos: ADFS, Okta, Shibboleth, Keycloak.

SP (Service Provider)

  • Consume la aserción emitida por el IdP.
  • Valida firma, audiencia, expiración.
  • Utiliza los atributos para crear sesión local.

Tipos de Perfiles SAML

Web Browser SSO Profile

  • El más utilizado.
  • Usa POST/Redirect para intercambio de mensajes.
  • Ideal para aplicaciones web tradicionales.

Artifact Resolution Profile

  • En lugar de enviar la aserción completa, se envía un “artefacto” para ser resuelto por back-channel.
  • Más seguro en escenarios sensibles.

Single Logout (SLO)

  • Permite cerrar sesión en todos los SP federados.
  • Funciona mediante mensajes de logout firmados.

Flujo General de SAML 2.0

  1. El usuario accede a un SP.
  2. El SP redirige al IdP con una AuthnRequest.
  3. El IdP autentica al usuario.
  4. IdP devuelve una Aserción SAML firmada al SP.
  5. El SP valida la firma y crea la sesión del usuario.

Ventajas

  • Alta interoperabilidad entre proveedores.
  • Modelo muy seguro cuando se configuran correctamente firmas y certificados.
  • Útil para aplicaciones heredadas que no soportan OIDC.

Desventajas

  • Basado en XML: mensajes más pesados que OIDC.
  • Complejidad en configuración.
  • Menos orientado a dispositivos móviles o SPAs.
  • Menor soporte moderno respecto a OIDC.

Diferencias con Otros Protocolos

  • LDAP vs SAML:
  • SAML vs OIDC:
    • SAML → XML, diseñado para SSO corporativo clásico.
    • OIDC → JSON/JWT, ideal para aplicaciones modernas y APIs.

Enlaces de Referencia

Ejemplo de Aserción SAML (simplificada)

Código

<saml:Assertion ID="_12345" IssueInstant="2025-11-14T12:00:00Z" Version="2.0">
	<saml:Issuer>https://idp.example.com</saml:Issuer>
	<saml:Subject>
		<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
			user@example.com
		</saml:NameID>
	</saml:Subject>
	<saml:AttributeStatement>
		<saml:Attribute Name="role">
			<saml:AttributeValue>admin</saml:AttributeValue>
		</saml:Attribute>
	</saml:AttributeStatement>
</saml:Assertion>

`