Guía del desarrollador para la autenticación SAML [3 Online Tools]

En el mundo actual, simplificar la administració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 desafío para los desarrolladores: ¿cómo proporciona a los empleados un acceso seguro a las aplicaciones internas y 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. Está basado en XML (Extensible Markup Language), que estandariza la comunicación entre las entidades a autenticar y el servicio o aplicación web. En otras palabras, SAML es lo que hace posible usar un solo inicio de sesión para iniciar sesión en múltiples aplicaciones diferentes.

Por un lado, un proveedor de servicios necesita la autenticación del proveedor de identidad (IdP) para otorgar autorización al usuario. Por ejemplo, Salesforce es un proveedor de servicios que depende de un proveedor de identidad para la autenticación de usuarios.

Por otro lado, un proveedor de identidad 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 brindar soluciones de identidad.

¿Qué sucede con el inicio de sesión único de SAML?

Una de las funciones principales de SAML es habilitar SSO. Antes de SAML, SSO era posible pero dependía de las cookies y solo era viable en el mismo dominio.

SAML permite el inicio de sesión único (SSO) al permitir que los usuarios accedan a múltiples aplicaciones con un solo inicio de sesión y un conjunto de credenciales. Aunque SAML no es nuevo, existe desde 2002, y muchas aplicaciones nuevas y empresas de SaaS están utilizando SAML para SSO. Su versión más reciente, SAML 2.0, permite SSO entre dominios basado en la web y es el estándar para la autorización de recursos.

¿Cuáles son los beneficios de la autenticación SAML?

SAML brinda muchos beneficios para la seguridad, los usuarios y otros proveedores de servicios (SP).

Simplicidad: los usuarios solo inician sesión en el IdP una vez y luego disfrutan de un acceso más seguro y sin inconvenientes a todas las aplicaciones.

Mayor seguridad: muchos SP no tienen el tiempo o los recursos para implementar y hacer cumplir la autenticación de usuario segura al iniciar sesión. En 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 varias capas de seguridad, como MFA.

Experiencia de usuario mejorada: con SAML, sus usuarios pueden decir adiós a los dolores de cabeza de tratar de recordar múltiples nombres de usuario y contraseñas.

Reducción de los gastos generales de administració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ña olvidada. La mesa de ayuda reduce los costos y libera a los equipos técnicos para que se ocupen de otras solicitudes urgentes.

¿Qué es Auth0 y cómo se conecta a la autenticación SAML?

Auth0 es una plataforma que proporciona el servicio de autenticación y autorización de usuarios. Puede ser tanto IdP como SP. Auth0 ofrece un inicio de sesión universal que se puede integrar con SAML. Los desarrolladores a menudo usan Auth0 con SAML para diversificar el riesgo al tener múltiples IdP.

Auth0 se puede usar con casi todos los idiomas y API principales. También se puede integrar con proveedores sociales, bases de datos y directorios LDAP.

Flujo de inicio de sesión único de SAML

Una de las funciones principales de SAML es habilitar el inicio de sesión único (SSO). Antes de SAML, SSO era posible pero dependía de las cookies y solo era viable en el mismo dominio.

SAML habilita SSO al permitir que los usuarios accedan a múltiples aplicaciones con un solo inicio de sesión y credenciales. SAML no es nuevo, existe desde 2002, y muchas aplicaciones nuevas y empresas de SaaS están utilizando SAML para SSO. Su versión más reciente, SAML 2.0, permite SSO entre dominios basado en la web y es el estándar para la autorización de recursos.

En términos concretos, se trata de solicitar la autenticación al usuario una sola vez cuando éste se encuentra utilizando distintas aplicaciones. Por ejemplo, podemos pensar en la autenticación de Google, compartida entre los diferentes 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

Al conectarse a la aplicación externa, envía al usuario desconocido al IdP corporativo. Este IdP es un servicio web accesible en HTTPS. Puede ser alojado interna o externamente.

Autenticación interna

Luego, el usuario prueba su identidad al IdP. Esta fase se puede realizar mediante autenticación explícita (login/contraseña) o mediante la propagación de un token preexistente.

Generación de la afirmación

El IdP generará entonces un “token”, una especie de cédula de identidad del usuario, válido únicamente para el servicio solicitado y por un tiempo determinado. En este token, encontraremos en particular:

  • La identidad del usuario: inicio de sesión, correo electrónico u otros campos
  • Atributos adicionales opcionales: apellido, nombre, idioma, etc.
  • Un período de validez del token.
  • Una firma del token por parte del IdP

Transmisión de IdP a SP

En el modo más práctico, la aserción no se pasa 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 transmitirlo al proveedor de servicios. Se puede comparar con la tarjeta de identidad proporcionada por la prefectura para ser presentada ante cualquier autoridad.

Consumo del token por parte del SP

El proveedor de servicios recibe el token del usuario. El SP ha optado por confiar en este IdP. También valida la firma y la integridad del token, así como el período de validez. Si las pruebas son concluyentes, el SP abre una sesión al usuario.

Fuente: Wikipedia

Autenticación SAML vs. Autorización de usuario

A menudo, la autenticación SAML se confunde 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 verifica si son quienes dicen ser. Un ejemplo es el uso de correo electrónico y contraseña para acceder a un sistema: una sola sesión o inicio de sesión para otras plataformas.

Autorización: estos son los permisos que el usuario otorga 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. Por lo general, hace esto cuando permite que una plataforma (como Facebook) acceda a cierta información de su cuenta de Google.

Terminologías imprescindibles de SAML

Aserción SAML

Las aserciones de SAML generalmente las pasan 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 fue realmente autenticado 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 con ciertos atributos. Un atributo es simplemente un par nombre-valor. Las partes de confianza usan los atributos para tomar decisiones de control de acceso.
  • Una declaración de decisión autorizada afirma que a un sujeto se le permite actuar sobre un recurso presentando evidencia para ello. La expresividad de los estados de decisión de autorización en SAML está deliberadamente limitada.

Servicio al consumidor de afirmaciones

El Servicio de Consumidor de Aserciones o ACS es el punto donde el proveedor de identidad redirige después de 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 relé predeterminado

Es la URL predeterminada a la que se redirigirá al usuario después de autenticar el mensaje SAML. El estado de retransmisión predeterminado se utiliza para coordinar mensajes entre IdP y SP.

SAML es un protocolo ampliamente utilizado y, a menudo, es necesario decodificar las afirmaciones de SAML. Las siguientes son algunas de las mejores herramientas SAML para codificar, decodificar y formatear mensajes y aserciones SAML:

#1. herramienta SAML

SAMLherramienta by OneDesign es una colección de herramientas y kits de herramientas SAML en línea. Estos incluyen varias herramientas para codificar y decodificar mensajes SAML, cifrar y descifrar aserciones y firmar y validar mensajes y aserciones SAML. SAMLtool también proporciona varios complementos 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 le permite decodificar, inspeccionar y verificar mensajes y afirmaciones SAML simplemente pegando XML sin formato o URL que contienen solicitudes.

#3. decodificador SAM

decodificador SAM es una herramienta en línea simple para decodificar SAML que ofrece PingIdentity. El decodificador SAM se puede usar para decodificar, inflar y formatear mensajes, aserciones y metadatos SAML.

Ultimas palabras

El estándar SAML es muy útil para implementar una instancia de autenticación central basada en el lenguaje de marcado. Una de sus ventajas significativas es que ofrece una alta eficiencia y un alto estándar de seguridad.

En particular, se minimiza el número de posibles filtraciones de seguridad ya que las aplicaciones individuales no tienen que almacenar o sincronizar datos de usuario. De esta forma, se consigue uno de los objetivos principales, que es conciliar un alto grado de seguridad con el mejor nivel posible de facilidad de uso.

También puede ver algunas de las mejores plataformas de autenticación de usuarios.