Saltar al contenido

¿Guía de implementación de SAML/ADFS node.js?

Hacemos una revisión exhaustiva cada escrito de nuestro espacio con la meta de enseñarte siempre la información más veraz y certera.

Solución:

Recientemente pasé por el mismo proceso de pensamiento: nunca había oído hablar de SAMLnecesitaba habilitar una aplicación web para autenticarse a través de SAML con OneLogin como proveedor de identidad (en lugar de Active Directory).

Durante la implementación, hice un uso intensivo de la documentación de OneLogin y el passport-saml biblioteca, las cuales recomiendo, aunque no estoy afiliado a ninguna.

Me di cuenta de que la confusión era triple:

(1) cómo funciona SAML,

(2) cómo el passport-saml la biblioteca funciona en Node, y

(3) cómo configurar el proveedor de identidad (OneLogin, Directorio Activo, o de otro modo). Lo que sigue es mi intento de una explicación de “explicar como si tuviera cinco”.

SAML

El lenguaje de marcado de aserción de seguridad (SAML) es un estándar XML que permite a los usuarios iniciar sesión en función de su sesión de navegador. Hay mucho, pero básicamente, permite un proceso de autenticación más simple. Un usuario puede hacer clic en un botón en lugar de enviar un formulario con nombre de usuario y contraseña.

La forma en que funciona SAML es un poco más complicada. Encontré útil esta descripción general de OneLogin y el diagrama adjunto:

Flujo SAML SSO, OneLogin.com

El diagrama representa el siguiente proceso:

  1. El usuario hace clic en un botón para autenticarse en una aplicación determinada (a veces denominada proveedor de servicios) mediante SAML. Se realiza una solicitud (a Node o de otro modo) para crear una solicitud de autorización de SAML.
  2. Se construye una solicitud de autorización. Esta solicitud de autorización es XML (ver más en OneLogin), codificada y/o encriptada y adjuntada a una URL como un parámetro de consulta. El nodo redirige el navegador a esta URL (algo así como https://domain.onelogin.com/trust/saml2/http-post/sso/123456?SAMLRequest=…encodedXML…).
  3. OneLogin, como proveedor de identidad, determina a partir de la sesión del navegador si el usuario ya ha iniciado sesión. De lo contrario, se solicita al usuario el formulario de inicio de sesión de OneLogin. Si es así, el navegador envía una respuesta SAML a la aplicación (proveedor de servicios). Esta respuesta SAML (nuevamente XML) incluye ciertas propiedades sobre el usuario, como NameID.
  4. De vuelta en Node, la aplicación verifica la respuesta SAML y completa la autenticación.

Nodo y passport-saml

Passport.js es un middleware de autenticación para Node. Requiere una estrategia, que podría ser algo como passport-local o, en nuestro caso, passport-saml.

como el passport-local La estrategia permite la autenticación de Passport usando nombre de usuario/contraseña, el passport-saml La estrategia habilita la autenticación de Passport utilizando la sesión del navegador y los valores configurables del proveedor de identidad.

Tiempo passport-saml cumplió mis propósitos muy bien, sus documentos fueron difíciles de razonar. El ejemplo de configuración no funciona debido a que el proveedor de identidad OpenIdp está inactivo y hay un montón de parámetros configurables.

El principal que me importaba: entryPoint y path (o callbackURL). Solo necesitaba estos dos, que hacen lo siguiente:

  • entryPoint es la URL para redirigir con la solicitud de autorización (ver #2 arriba).
  • path/callbackURL configure la URL/ruta en el nodo para que se publique la respuesta SAML (consulte el n.° 3 anterior).

Hay un montón de otros parámetros que son importantes y valiosos, pero es posible configurar SAML SSO usando solo estos dos.

Configuración del proveedor de identidad

Finalmente, el propio proveedor de identidad debe configurarse para que, dada una solicitud de autorización de SAML, sepa dónde enviar la respuesta de SAML. En el caso de OneLogin, eso significa configurar un ACS (Consumer) URL y un ACS (Consumer) URL Validatorlos cuales deben coincidir con el path/callbackURL configurado para pasaporte-saml.

Se pueden configurar otras cosas (para admitir el cierre de sesión y otras funciones), pero esto es lo mínimo para autenticarse.


Resumen

La pregunta original constaba de dos partes: (1) cómo implementar la integración SAML/ADFS y (2) la guía de implementación SAML node.js de alto nivel. Esta respuesta aborda la segunda.

En cuanto a la integración específica con Active Directory, recomiendo los documentos de pasaporte-saml en ADFS, teniendo en cuenta que hay dos partes: configurar pasaporte-saml para usar un proveedor de identidad ADFS Y configurar su servidor ADFS para responder a Node.

Reseñas y valoraciones

Recuerda que puedes dar difusión a este post si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *