Llegamos a ustedes gracias a:



Reportajes y análisis

SAML: Qué es, para qué se usa, cómo funciona

[17/11/2017] El Lenguaje de marcado para confirmaciones de seguridad (SAML, por sus siglas en inglés) es un estándar abierto que permite que las credenciales de seguridad sean compartidas por múltiples computadoras a través de una red. Describe un marco que permite que una computadora realice algunas funciones de seguridad en nombre de otra o más computadoras:

  • Autenticación: Determinar que los usuarios son quienes dicen ser
  • Autorización: Determinar si los usuarios tienen derecho a acceder a ciertos sistemas o contenidos

En sentido estricto, SAML se refiere al lenguaje variante de XML utilizado para codificar toda esta información, pero el término también puede abarcar varios mensajes y perfiles de protocolo que forman parte del estándar.

SAML 2.0 se introdujo en el 2005 y sigue siendo la versión actual del estándar. La versión anterior, 1.1, prácticamente no se usa. SAMLDiffs cuenta con un gran resumen de las diferencias entre las versiones.

SAML es una forma de implementar el inicio de sesión único (SSO) y, de hecho, SSO es, de lejos, el caso de uso más común de SAML. Comenzaremos hablando de SSO para darle una idea de para qué se utiliza SAML, y luego profundizaremos en los componentes y operaciones de SAML.

¿Qué es el inicio de sesión único (SSO) y para qué se utiliza?

El inicio de sesión único es una forma de que un usuario ofrezca un token de seguridad (como un par de nombre de usuario/contraseña) una sola vez, y lo use para obtener acceso a múltiples sistemas, plataformas, aplicaciones u otros recursos. Facilita las cosas para los usuarios, pues no tienen que recordar múltiples nombres de usuario y contraseñas, y facilita las cosas para TI porque no tienen que consolidar múltiples servicios en un único servidor. Por ejemplo, una organización puede hacer uso de SSO para permitir a los usuarios iniciar sesión tanto en aplicaciones web propietarias que se ejecutan en un servidor interno, como en un sistema ERP alojado en SaaS.

Algunos buenos lugares para aprender más acerca de SAML

¿Listo para aprender más? Estos son algunos de los mejores y más profundos tutoriales de SAML:

Para que SSO funcione, un usuario debe poder autenticarse una vez y recibir autorización, en función de su identidad confirmada, para acceder a otras muchas computadoras. Esto también puede funcionar de la otra manera: una sola computadora puede proporcionar servicios a usuarios autorizados en muchas otras computadoras. El estándar SAML define cómo todas estas computadoras se comunican entre sí de forma segura.

¿Qué es un proveedor de SAML?

En SAML Lingo, un proveedor es una entidad -generalmente un servidor u otra computadora- dentro de un sistema, que ayuda al usuario a acceder a los servicios que desea. Los sistemas que brindan o consumen servicios SAML se denominan, genéricamente, proveedores de servicios; el tipo de proveedor de servicios más importante es un proveedor de identidad.

¿Qué es un proveedor de identidad?

Un proveedor de identidad es la entidad dentro del sistema que se asegura de que el usuario realmente es quien dice ser -proporciona autenticación. También puede determinar a qué servicios, en su caso, el usuario está autorizado para acceder a través de varias entidades en el sistema. Existen muchas implementaciones que pueden proporcionar servicios de autenticación acorde con el estándar SAML: Salesforce puede cumplir este rol, por ejemplo; y también LDAP, RADIUS o ActiveDirectory.

¿Qué es una confirmación SAML?

Una confirmación SAML es el documento XML por el cual toda la información que hemos estado discutiendo se transmite de una computadora a otra. Una vez que un proveedor de identidades ha determinado que usted es quien dice ser, y que tiene derecho a acceder al contenido o servicios que le interesan, envía una confirmación SAML al servidor que realmente puede proporcionarle esos servicios. Una confirmación SAML puede estar encriptada para mayor seguridad.

Para obtener más información sobre todos estos términos, consulte el glosario oficial de SAML de OASIS.

¿Cómo funciona la autenticación SAML?

Todo esto puede parecer algo abstracto, así que aquí hay una imagen de alto nivel de cómo se llevaría a cabo una transacción de autenticación SAML. En la Figura 1 se proporciona una ilustración gráfica. El agente de usuario sería, en la mayoría de los casos, un navegador web.

Figura 1. Una secuencia de autenticación SAML
SAML, gestión de identidades

Imagine que es el usuario en un entorno con inicio de sesión único, y está intentando acceder a algún recurso en un servidor. La secuencia de eventos es la siguiente:

  1. Intenta acceder al recurso en el servidor, que, en la terminología de SAML, es un proveedor de servicios. El proveedor de servicios verifica si ya está autenticado dentro del sistema. Si es así, salta al paso 7; si no lo está, el proveedor del servicio inicia el proceso de autenticación.
  2. El proveedor del servicio determina el proveedor de identidad apropiado para usted, y lo redirige a ese proveedor -en este caso, el servicio de inicio de sesión único.
  3. Su navegador envía una solicitud de autenticación al servicio SSO; el servicio luego lo identifica.
  4. El servicio SSO devuelve un documento XHTML, que incluye la información de autenticación que necesita el proveedor de servicios en un parámetro de respuesta de SAML.
  5. El parámetro de respuesta de SAML llega al proveedor de servicios.
  6. El proveedor de servicios procesa esta respuesta y crea un contexto de seguridad para usted -básicamente, lo registra-, y luego le indica dónde se encuentra el recurso solicitado.
  7. Con esta información, ahora puede solicitar el recurso que le interesa nuevamente.
  8. ¡El recurso finalmente le es devuelto!

Notará que mucho de esto es de alto nivel: por ejemplo, no hay explicación sobre cómo SAML sabe cuál es el proveedor de identidad apropiado, o cómo el proveedor de identidad determina que es quien dice ser. No se trata de que dejemos las cosas fuera: el estándar SAML no define cómo ocurren estas cosas, dándole a TI mucha libertad de acción para configurar las cosas. Como se señaló anteriormente, por ejemplo, se pueden usar múltiples tecnologías para la pieza de autenticación real; ya sea que elija Salesforce, LDAP u otra cosa, las confirmaciones de SAML llevarán la información de que ha sido autenticado desde un proveedor a otro.

Si desea ver más de cerca los mensajes que se transmiten en una transacción de SAML, consulte los ejemplos de OneLogin. Puede profundizar en el código XML completo para los tipos de confirmaciones que se pasan del proveedor de identidades al proveedor de servicios en el escenario descrito anteriormente.

SAML vs. OAuth: ¿Cuál es la diferencia?

OAuth es un estándar un poco más nuevo que SAML, desarrollado conjuntamente por Google y Twitter a partir del 2006. Fue desarrollado, en parte, para compensar las deficiencias de SAML en las plataformas móviles, y está basado en JSON en lugar de XML.

Además del soporte móvil no muy brillante de SAML, ¿cuál es la diferencia entre los dos? Como hemos visto, el estándar SAML define cómo los proveedores pueden ofrecer servicios de autenticación y autorización. OAuth, por otro lado, solo trata con la autorización. OpenID Connect es un estándar aún más nuevo, desarrollado en el 2014, que brinda servicios de autenticación y está superpuesto a OAuth.

Otra gran diferencia son sus casos de uso. Si bien, teóricamente SAML fue diseñado para usarse en internet abierto, en la práctica se implementa con mayor frecuencia dentro de las redes empresariales para el inicio de sesión único. OAuth, por el contrario, fue diseñado por Google y Twitter para la escala de internet.

Vea también