En el mundo actual, simplificar la gestión de contraseñas es esencial. A medida que las empresas avanzan en la digitalización, los empleados utilizan más que nunca herramientas de colaboración, mensajería y almacenamiento.
Esto plantea un reto a los desarrolladores: ¿cómo proporcionar a los empleados un acceso seguro a las aplicaciones internas y a los datos almacenados en la nube? Para muchos, ¡la respuesta es la autenticación SAML!
¿Qué es SAML?
Security Assertion Markup Language o SAML es un estándar abierto que simplifica los procesos de autenticación. Se basa en XML (Extensible Markup Language), que estandariza la comunicación entre las entidades que deben autenticarse y el servicio web o la aplicación. En otras palabras, SAML es lo que hace posible utilizar un único inicio de sesión para acceder a varias aplicaciones diferentes.
Por un lado, un proveedor de servicios necesita la autenticación del proveedor de identidades (IdP ) para conceder la autorización al usuario. Por ejemplo, Salesforce es un proveedor de servicios que depende de un proveedor de identidades para la autenticación del usuario.
Por otro lado, un proveedor de identidades autentica que el usuario final es quien dice ser y envía esos datos al proveedor de servicios junto con los derechos de acceso del usuario al servicio. Un ejemplo es AuthO, uno de los líderes en el suministro de soluciones de identidad.
¿Qué ocurre con el inicio de sesión único SAML?
Una de las principales funciones de SAML es permitir el SSO. Antes de SAML, el SSO era posible pero dependía de las cookies y sólo era viable en el mismo dominio.
SAML permite el inicio de sesión único (SSO) al permitir a los usuarios acceder a varias aplicaciones con un único inicio de sesión y un único conjunto de credenciales. Aunque SAML no es nuevo, existe desde 2002, y muchas aplicaciones nuevas y empresas de SaaS utilizan SAML para el SSO. Su versión más reciente, SAML 2.0, permite el SSO entre dominios basado en web y es el estándar para la autorización de recursos.
¿Cuáles son las ventajas de la autenticación SAML?
SAML aporta muchas ventajas para la seguridad, los usuarios y otros proveedores de servicios ( SP).
Simplicidad: Los usuarios sólo tienen que iniciar sesión en el IdP una vez y luego disfrutan de un acceso fluido y más seguro a todas las aplicaciones.
Mayor seguridad: Muchos SP no disponen del tiempo ni de los recursos necesarios para implementar y hacer cumplir la autenticación segura de los usuarios en el inicio de sesión. Por lo general, los IdP están mejor equipados para autenticar las identidades de los usuarios. Al devolver la autenticación al IdP, SAML permite una autenticación segura que puede aplicar múltiples capas de seguridad, como la MFA.
Experiencia de usuario mejorada: Con SAML, sus usuarios pueden decir adiós a los quebraderos de cabeza que supone intentar recordar varios nombres de usuario y contraseñas
Reducción de la sobrecarga de gestión: Los proveedores de servicios pueden mejorar la seguridad de su plataforma sin almacenar contraseñas. No hay necesidad de lidiar con problemas de contraseñas olvidadas. El servicio de asistencia reduce los costes y libera a los equipos técnicos para que puedan ocuparse de otras solicitudes urgentes.
¿Qué es Auth0 y cómo se relaciona con la autenticación SAML?
Auth0 es una plataforma que proporciona un servicio de autenticación y autorización de usuarios. Puede funcionar tanto como IdP como SP. Auth0 ofrece un inicio de sesión universal que puede integrarse con SAML. Los desarrolladores suelen utilizar Auth0 con SAML para diversificar el riesgo al tener varios IdP.
Auth0 puede utilizarse con casi todos los principales lenguajes y API. También puede integrarse con proveedores sociales, bases de datos y directorios LDAP.
Flujo SAML SSO
Una de las principales funciones de SAML es permitir el inicio de sesión único (SSO). Antes de SAML, el SSO era posible pero dependía de las cookies y sólo era viable en el mismo dominio.
SAML habilita el SSO permitiendo a los usuarios acceder a múltiples aplicaciones con un único inicio de sesión y credenciales. SAML no es nuevo, existe desde 2002, y muchas aplicaciones nuevas y empresas de SaaS utilizan SAML para el SSO. Su versión más reciente, SAML 2.0, permite el SSO entre dominios basado en web y es el estándar para la autorización de recursos.
En concreto, se trata de solicitar la autenticación del usuario una sola vez cuando éste utiliza diferentes aplicaciones. Por ejemplo, podemos pensar en la autenticación de Google, compartida entre los distintos servicios Gmail, Youtube, Google Apps, etc.
En este modo de funcionamiento, Google es el proveedor de identidad (IdP) de sus servicios. Estos servicios se denominan «proveedores de servicios» (SP).
Autenticación
Cuando se conecta a la aplicación externa, ésta envía al usuario desconocido al IdP corporativo. Este IdP es un servicio web accesible en HTTPS. Puede estar alojado interna o externamente.
Autenticación interna
A continuación, el usuario demuestra su identidad al IdP. Esta fase puede realizarse mediante autenticación explícita (login/contraseña) o mediante la propagación de un token preexistente.
Generación de la aserción
A continuación, el IdP generará un «token», una especie de tarjeta de identidad del usuario, válida únicamente para el servicio solicitado y durante un tiempo determinado. En este token, encontraremos en particular
- La identidad del usuario: nombre de usuario, correo electrónico u otros campos
- Atributos adicionales opcionales: apellido, nombre, idioma, etc.
- Un periodo de validez del token
- Una firma del token por parte del IdP
Transmisión del IdP al SP
En el modo más práctico, la aserción no se transmite directamente del IdP al SP, sino a través del propio usuario. A través de un mecanismo de rebote HTTP, el IdP proporcionará al navegador del cliente el token para que lo transmita al proveedor de servicios. Puede compararse con el documento de identidad proporcionado por la prefectura para ser presentado ante cualquier autoridad.
Consumo del token por parte del SP
El proveedor de servicios recibe el token del usuario. El SP ha elegido confiar en este IdP. También valida la firma y la integridad del token, así como el periodo de validez. Si las pruebas son concluyentes, el SP abre una sesión al usuario.
Autenticación SAML Vs. Autorización de usuario
A menudo se confunde la autenticación SAML con la autorización. Para mayor claridad, es importante diferenciar los conceptos de autenticación y autorización.
Autenticación: es la validación de la identidad del usuario; básicamente, se comprueba si es quien dice ser. Un ejemplo es el uso del correo electrónico y la contraseña para acceder a un sistema: una sesión única o el inicio de sesión para otras plataformas.
Autorización: se trata de los permisos que el usuario concede a una herramienta de terceros para acceder a los recursos de su cuenta. Con la aprobación del usuario, el protocolo de autorización intercambia tokens sin acceder a sus credenciales. Suele hacerse cuando se permite a una plataforma (como Facebook) acceder a cierta información de su cuenta de Google.
Terminologías imprescindibles de SAML
Aserción SAML
Las aserciones SAML suelen pasarlas los proveedores de identidad a los proveedores de servicios. Las aserciones contienen declaraciones que los proveedores de servicios utilizan para tomar decisiones de control de acceso. SAML proporciona tres tipos de declaraciones:
- Las declaraciones de autenticación afirman que el proveedor de servicios se autenticó efectivamente con el proveedor de identidad en un momento dado con un método de autenticación.
- Una declaración de atributo afirma que un sujeto está asociado a ciertos atributos. Un atributo es simplemente un par nombre-valor. Las partes de confianza utilizan los atributos para tomar decisiones de control de acceso.
- Una declaración de decisión de autorización afirma que un sujeto está autorizado a actuar sobre un recurso presentando pruebas para ello. La expresividad de los estados de decisión de autorización en SAML está deliberadamente limitada.
Servicio de consumidor de aserciones
El servicio de consumidor de aserciones o ACS es el punto al que redirige el proveedor de identidad tras la respuesta de autenticación del usuario. El punto al que redirige el proveedor de identidad es un punto final HTTPS que transfiere información personal.
Estado de retransmisión por defecto
Es la URL por defecto a la que se redirigirá al usuario tras la autenticación del mensaje SAML. Default Relay State se utiliza para coordinar los mensajes entre los IdP y los SP.
Las mejores herramientas SAML en línea
SAML es un protocolo muy utilizado y a menudo es necesario descodificar las aserciones SAML. A continuación encontrará algunas de las mejores herramientas SAML para codificar, descodificar y dar formato a los mensajes y aserciones SAML:
#1. SAMLtool
SAMltool de OneDesign es una colección de herramientas y conjuntos de herramientas SAML en línea. Entre ellas se incluyen varias herramientas para codificar y descodificar mensajes SAML, cifrar y descifrar aserciones, y firmar y validar mensajes y aserciones SAML. SAMLtool también proporciona varios plugins diferentes para integrar estas herramientas con varios CMS.
#2. Samtool.io
Ofrecido por Auth0, samltool.io es una herramienta en línea que también usted decodificar, inspeccionar y verificar los mensajes SAML y aserciones simplificando pegar XML en bruto o URLs que contengan solicitudes.
#3. Decodificador SAM
SAMdecoder es una sencilla herramienta en línea para descodificar SAML ofrecida por PingIdentity. SAM decoder puede utilizarse para decodificar, inflar y formatear mensajes, aserciones y metadatos SAML.
Palabras finales
El estándar SAML es muy útil para implementar una instancia central de autenticación basada en el lenguaje de marcado. Una de sus ventajas significativas es que ofrece una gran eficacia y un estándar de alta seguridad.
En concreto, se minimiza el número de posibles fugas de seguridad, ya que las aplicaciones individuales no tienen que almacenar ni sincronizar los datos de los usuarios. De este modo, se logra uno de los objetivos primordiales, que es conciliar un alto grado de seguridad con el mejor nivel posible de facilidad de uso.
También puede consultar algunas de las mejores plataformas de autenticación de usuarios.