¿Qué es ADFS (Servicios de federación de Active Directory)?

77

Así que me han dicho que nuestra aplicación PHP puede necesitar admitir autenticación usando ADFS.

  1. Para una persona que no es de Microsoft, ¿qué es ADFS?

  2. ¿En qué se diferencia de cosas como LDAP?

  3. ¿Como funciona? ¿Qué tipo de información se incluiría en una solicitud típica a un servidor ADFS? ¿Está diseñado para autenticación y autorización?

  4. ¿Los servidores ADFS suelen ser accesibles desde Internet (mientras que los controladores de dominio AD corporativos no lo serían)?

Intenté leer algunos de los documentos de Technet, pero está lleno de Microsoft-speak que no es de gran ayuda.

Wikipedia es mejor (ver más abajo), pero quizás parte de la comunidad ServerFault puede llenar algunos de los vacíos.

Active Directory Federation Services (ADFS) es un componente de software desarrollado por Microsoft que se puede instalar en los sistemas operativos Windows Server para proporcionar a los usuarios acceso de inicio de sesión único a sistemas y aplicaciones ubicados más allá de los límites de la organización. Utiliza un modelo de autorización de control de acceso basado en notificaciones para mantener la seguridad de la aplicación e implementar la identidad federada.

La autenticación basada en reclamos es el proceso de autenticación de un usuario basado en un conjunto de reclamos sobre su identidad contenida en un token de confianza.

En ADFS, la federación de identidad se establece entre dos organizaciones al establecer la confianza entre dos reinos de seguridad. Un servidor de federación en un lado (el lado de Cuentas) autentica al usuario a través de los medios estándar en los Servicios de dominio de Active Directory y luego emite un token que contiene una serie de reclamos sobre el usuario, incluida su identidad. Por otro lado, en el lado de Recursos, otro servidor de federación valida el token y emite otro token para que los servidores locales acepten la identidad reclamada. Esto permite que un sistema proporcione acceso controlado a sus recursos o servicios a un usuario que pertenece a otro ámbito de seguridad sin requerir que el usuario se autentique directamente en el sistema y sin que los dos sistemas compartan una base de datos de identidades de usuario o contraseñas.

En la práctica, el usuario suele percibir este enfoque de la siguiente manera:

  1. El usuario inicia sesión en su PC local (como lo haría normalmente al comenzar a trabajar por la mañana)
  2. El usuario debe obtener información en el sitio web de extranet de una empresa asociada, por ejemplo, para obtener información sobre precios o productos.
  3. El usuario navega al sitio de extranet de la empresa asociada, por ejemplo: http://example.com
  4. El sitio web del socio ahora no requiere que se ingrese ninguna contraseña; en cambio, las credenciales de usuario se pasan al sitio de la extranet del socio mediante AD FS
  5. El usuario ahora ha iniciado sesión en el sitio web asociado y puede interactuar con el sitio web 'conectado'

De https://en.wikipedia.org/wiki/Active_Directory_Federation_Services

Simon East
fuente
Encontré estos artículos y este video útiles para proporcionar una visión general.
Simon East
Reaces proporcionó una excelente respuesta. La única información adicional que agregaría es que podría pagar comprender el protocolo WS-Federation y el Lenguaje de marcado de aserción de seguridad (SAML), que son los estándares que implementa ADFS. Aquí hay algunos videos que encontré útiles para comprender estos conceptos (bastante complejos). Lamentablemente contienen tanto material que no puedo incluirlo aquí. ! [Miniatura del video Descripción de SAML y Single Sign-On 101 en YouTube] ( youtube.com/watch?v=gUmMcecHN9s ) [! [Miniatura del video] (http
Simon East
También tuve problemas para entender ADFS. Necesitaba una explicación desde el principio (no soy una persona con AD). Este video que se incluye en la serie que se menciona en los comentarios aquí, fue muy útil para mí. Aquí es donde cualquier persona nueva con experiencia cero con ADFS debe comenzar y luego continuar con el resto de los videos de la serie. Espero que ayude. youtube.com/…
Mauricio Zaragoza
1
Lo siento amigos, un moderador eliminó mi respuesta con los videos útiles y lo hizo un comentario arriba, pero ahora está roto. Frustrante.
Simon East

Respuestas:

97

Para una persona que no es de Microsoft, ¿qué es ADFS?

ADFS es la solución de Microsoft para el inicio de sesión único y la autenticación basada en web.

Se utiliza principalmente para proporcionar un conjunto único de credenciales que pueden acceder a una variedad de sitios que no necesariamente están alojados en el mismo dominio.

¿En qué se diferencia de cosas como LDAP?

LDAP:

  • Se comunica utilizando TCP / UDP en el puerto 389 (o el puerto 636 para LDAPS)
  • Contiene comandos para buscar / recuperar / agregar / eliminar / modificar usuarios, perfiles y otras entradas de directorio
  • No se puede realizar directamente por un navegador web, sin embargo, la autenticación HTTP se puede traducir a LDAP utilizando cosas como la de Apache mod_authnz_ldap.
  • Cuando se utiliza para la autenticación de un sitio web de un tercero, requiere que se proporcione el nombre de usuario y la contraseña al tercero, lo que no es ideal para la seguridad.
  • Es más un estándar abierto y tiene numerosas implementaciones de Linux.

ADFS:

  • Mejor diseñado para la web, ya que se comunica a través de HTTPS estándar
  • Sigue un proceso más seguro similar (pero no exacto) a OAuth donde el nombre de usuario / contraseña original se proporcionan directamente al servidor ADFS de la organización (o un proxy, pero no el tercero), que si es válido, devuelve un token único que puede ser utilizado para acceder a un sitio web de terceros.
  • Aunque sí utiliza algunos estándares abiertos (HTTPS, SAML, etc.), es específico de Microsoft y requiere Internet Information Services (IIS) que solo se ejecuta en servidores Windows.

Ver también esta respuesta sobre el tema.

¿Como funciona? ¿Qué tipo de información se incluiría en una solicitud típica a un servidor ADFS? ¿Está diseñado para autenticación y autorización?

Funciona al tener un solo sitio (sitio A) que aloja los servidores proxy ADFS / ADFS, que tiene acceso a las credenciales (generalmente comunicándose con un controlador de dominio de Active Directory). Luego se le otorga una confianza entre otros sitios (sitios B y C) que requieren autenticación a través del ADFS.

Cuando un usuario intenta acceder al sitio B en su navegador, el sitio redirige al usuario al sitio web de proxy ADFS (sitio A) que solicita su nombre de usuario y contraseña, los autentica, devuelve un conjunto de cookies para recordarlos y los redirige volver al sitio B, junto con un token de acceso.

Si el usuario intenta visitar el sitio C, también será redirigido al sitio A para la autenticación del sitio web de proxy ADFS. Si existen las cookies correctas, no se requerirá que el usuario ingrese su contraseña nuevamente, sino que será redirigido instantáneamente al sitio C con un token.

El ADFS se puede configurar con reclamos específicos (o permisos) para el usuario, con fines de autorización. Por lo tanto, puede cumplir ambos roles. (Tenga en cuenta la diferencia entre autenticación y autorización ).

Algunas personas prefieren no usarlo para autorización, sino que mantienen la administración de permisos en el sitio web de terceros. El inconveniente obvio es que tanto el sitio A como el B deben realizar un seguimiento de las cuentas de los usuarios, mientras que en el escenario en el que ADFS maneja ambos, solo el ADFS debe conocer a los usuarios.

¿Los servidores ADFS suelen ser accesibles desde Internet (mientras que los controladores de dominio AD corporativos no lo serían)?

Si, casi siempre. ADFS se basa en la noción de que se utilizará principalmente para la autenticación de sitios web. Y está construido alrededor de IIS.

El sitio de proxy ADFS es el que generalmente es accesible desde Internet. Sin embargo, el ADFS en sí no lo es. El ADFS es generalmente un servidor separado del proxy ADFS.

  • Servidor ADFS Servidor
    que se vincula a las credenciales y tiene la configuración de notificaciones, así como las confianzas. Generalmente no accesible al público.
  • Servidor proxy ADFS
    Servidor que aloja la instancia de IIS que tiene las páginas de inicio de sesión para los sitios web que requieren autenticación. Se comunica de nuevo con el ADFS cuando se requiere autenticación. Generalmente accesible al público.
Reaces
fuente
11
Para aclarar: el servidor proxy ADFS debe ejecutarse en IIS (Windows). Sin embargo, los sitios web de los clientes (B y C) pueden ejecutar cualquier sistema operativo y servidor web, incluido Linux.
Olli
Muy útil, acabo de crear una cuenta para hojear esto.
Juan
Ampliando la respuesta de @Reaces, ADFS 4.0 en Windows Server 2016 es totalmente compatible con OAuth / OpenId Connect.
Mohammad Reza Sadreddini
@MohammadRezaSadreddini Siéntase libre de editar la respuesta para ampliarla.
Recibe el