SAML (Security Assertion Markup Language) es un estándar de código abierto basado en XML que permite el intercambio de información, tanto de autenticación como de autorización entre diferentes partes: un identity provider (proveedor de identidad) y un service provider (proveedor de servicios).
Por un lado, un proveedor de servicios necesita la autenticación del proveedor de identidad para otorgar autorización al usuario. Por otro lado, un proveedor de identidad realiza la autenticación de que el usuario final es quien dice ser y envía esos datos al proveedor del servicio junto con los derechos de acceso del usuario al servicio.
Así, la autenticación SAML es el proceso por el cual se verifica la identidad y las credenciales del usuario (contraseña, autenticación de dos factores, etc.). La autorización SAML es la que le dice al proveedor de servicios qué acceso otorga al usuario autenticado.
SAML tiene diversas utilidades. Una de sus funciones es la de hacer declaraciones sobre las propiedades y autorizaciones de un usuario para otros usuarios o empresas asociadas, pero en especial sobre aplicaciones, es decir, a los "proveedores de servicios". Esto es posible gracias a que el identity provider, base de datos central en la que se almacena la correspondiente información del usuario, utiliza aserciones en un formato XML. Pero además, cuenta con otros componentes, como protocolos, enlaces y perfiles, que explicamos a continuación.
Cada una de las aserciones también recibe una firma digital, la cual debe ser verificada por el proveedor que accede al servicio. Esta es la forma mediante la que se garantiza la integridad y autenticidad del token SAML, que es el nombre que recibe la aserción tras haber sido firmada. Una vez se ha procedido a la correcta verificación, es el proveedor de servicios quien analiza el contenido real, con la finalidad de decidir, si corresponde, el tipo de acceso que se le otorga al usuario.
La especificación SAML 2.0 define un conjunto de protocolos de consulta / respuesta. A través de ellos, la aplicación puede solicitar o consultar una aserción, o bien solicitar a un usuario que se autentifique. Estos son los siguientes protocolos:
Las asignaciones de mensajes SAML en los protocolos estándar de mensajería o comunicación se denominan "enlaces de protocolo SAML" o simplemente "enlaces". Por ejemplo, el enlace SOAP define cómo se pueden intercambiar mensajes SAML dentro de entornos SOAP, mientras que el enlace de redireccionamiento HTTP define cómo se pueden transportar los mensajes del protocolo SAML mediante el reenvío HTTP. Otros enlaces que ya están predefinidos en SAML 2.0:
Una de las principales cualidades de SAML es su gran flexibilidad, que facilita su uso para una amplia variedad de propósitos. No obstante, hay que tener en cuenta que esa flexibilidad puede ser la causa de que algunas aplicaciones no lo admitan. Aunque en estos casos existe una solución que consiste en limitarla. La forma de hacerlo es usar los llamados perfiles.
En general, un perfil de SAML define restricciones y / o extensiones en apoyo del uso de SAML para una aplicación en particular; su finalidad es mejorar la interoperabilidad al eliminar parte de la flexibilidad inevitable en un estándar de uso general. Por ejemplo, el "SAML 2.0 Web Browser SSO Profile", uno de los perfiles más destacados, contiene todos los componentes esenciales para definir la comunicación de los requisitos de autenticación SAML entre los proveedores de identidad y servicios. Además, de esto, se ofrecen otros perfiles muy interesantes, que pueden ser de mucha utilidad:
¿Nos faltó algo? ¡No te preocupes! En caso de dudas o consultas, enviale un correo al equipo de soporte y te ayudarán soporte@nivelat.com ✌️