Inicio de sesión único para la aplicación .NET integrada con Active Directory

Tenemos varios clientes que usan nuestra aplicación web (no intranet), algunos clientes quieren que su inicio de sesión se integre con el Active Directory de su organización. Solo quieren que el usuario inicie sesión en su cuenta de Windows y pueda acceder a la aplicación web sin ingresar ninguna credencial de usuario.

He leído algunos artículos sobre ADFS, pero aún no estoy seguro de cómo integrarlo o implementarlo. ¿Alguna solución propuesta?

¡Gracias!

preguntado el 12 de junio de 12 a las 21:06

¿Su aplicación es interna o está alojada en la nube? -

La pregunta es demasiado abierta. Parece que no ha leído mucho sobre ADFS; de lo contrario, no haría preguntas como "cómo implementarlo". Simplemente descargue ADFS, instálelo cerca de Active Directory, expóngalo y haga que su aplicación web sea consciente de la federación. Hay buenos libros sobre eso, como el libro electrónico gratuito de MS, "Identidad basada en reclamos y control de acceso". Por favor, lea el libro electrónico, haga preguntas más específicas y obtendrá sus respuestas. -

Solo para tu información, la implementación de la autenticación basada en reclamos tiende a ser muy no trivial. -

3 Respuestas

Si desarrolla una aplicación basada en .NET, Microsoft proporciona una biblioteca llamada WIF, que se utiliza para comunicarse con el AD FS de una manera +- cómoda (configuración + pequeñas adaptaciones de código para obtener las notificaciones del mensaje de autenticación proporcionado por el AD FS).

Hay pocos protocolos compatibles con AD FS 2.0 y WIF, para que el SSO funcione, los más comunes son (afaik) SAML 2.0 y WS-Federación. Ambos se basan en mensajes XML, pero no es necesario que conozca los detalles si utiliza WIF.

Para WS - Federation, la biblioteca WIF proporciona un complemento para Visual Studio, que le permite configurar su sitio como usuario de confianza con su AD FS.

PUEDE usar las credenciales dentro de su base de datos para identificar a los usuarios, en realidad puede personalizan Toda la página de inicio de sesión y los eventos de autenticación de AD FS. Sin embargo, la instalación básica requiere que cada usuario esté definido dentro de su Active Directory. También puede usar su base de datos como un almacén de notificaciones (otra base de datos que usará AD FS para proporcionar información sobre los usuarios a las aplicaciones de confianza). Tenga en cuenta que si tiene la intención de usar un AD detrás de AD FS, su servicio AD FS debe poder acceder a él y consultarlo LDAP, lo que no estoy seguro de que funcione para usted, si sus usuarios inician sesión en su dominio local que el AD FS no está familiarizado con.


SI no es necesario que admita los protocolos estándar de SSO de la industria (SAML 2.0 que mencioné), no estoy seguro de que implementar AD FS sea una solución tan buena. Te obliga a trabajar de una forma determinada, que no siempre es tan cómoda.

Respondido el 18 de enero de 18 a las 02:01

El enlace WIF está muerto. Así se hace microsoft. - Maslow

@Maslow Arregló el enlace. - tecnico

Su pregunta no establece explícitamente si está limitado a usar ADFS para implementar SSO. ADFS es sin duda una forma de hacer esto. Es posible que desee ver OpenID-LDAP (estaba en www.openid-ldap.org, pero el proyecto ya no existe) así como de otros proveedores de identidad como alternativas para implementar SSO.

Una alternativa es implementar un proveedor de OpenID que utilice la autenticación de Windows integrada. Pueden instalarlo en su DMZ exponiéndolo a Internet, en lugar de ADFS. Puede permitir el inicio de sesión único desde Internet Explorer y Chrome.

Implementar un proveedor de OpenID no es un asunto trivial. Tendrás que prestar mucha atención a la seguridad. Afortunadamente, hay una serie de marcos como DotNetOpenAuth eso puede ayudarte.

Al usar OpenID, su aplicación de "nube" actuará como una base de OpenID y obtendrá un identificador reclamado entre otros atributos del proveedor de OpenID. Debe almacenar esto en su base de datos para identificar de forma única al usuario. Puede optar por implementar el proveedor de OpenID de modo que también pueda proporcionar a su aplicación en la nube la información mínima, como la dirección de correo electrónico, el nombre de la persona, etc.

El beneficio de usar OpenID es que su aplicación "en la nube" puede continuar admitiendo otros proveedores de OpenID conocidos como Google y Yahoo sin muchos cambios.

Al final, deberá preguntar a sus clientes con qué tecnologías se sienten cómodos. Descubrirá que la falta de confianza (un rasgo comercial) entre las organizaciones suele ser el desafío más que la tecnología.

Respondido 30 ago 17, 19:08

Se necesitan más detalles según los comentarios.

Hay una buena fuente aquí: Mapa de contenido de AD FS 2.0.

El "libro electrónico" es aquí.

Podría imaginar un escenario en el que vincula su aplicación en la nube a Azure ACS, sus clientes instalan ADFS encima de su AD y federan su ADFS con ACS. Eso le daría la funcionalidad que necesita.

Actualización tras comentario:

ADFS solo puede autenticarse contra AD. No puede autenticarse contra una base de datos. Puede obtener atributos de una base de datos de SQL Server que luego puede transformar en notificaciones, es decir, puede utilizar una base de datos de SQL para la autorización.

Si desea autenticarse en una base de datos SQL, tiene dos opciones.

  1. Crear un STS personalizado
  2. Use un STS "personalizado" existente como Servidor de identidad que permite esta funcionalidad.

Respondido el 13 de junio de 12 a las 19:06

Se requiere más información sobre lo siguiente: Actualmente, el usuario ha iniciado sesión en la aplicación web al verificar las credenciales almacenadas en la base de datos. ¿Puede ser posible implementar algo como que una cuenta de usuario de Active Directory se asigne a una determinada cuenta en la base de datos y tenga los mismos roles y funciones que en la base de datos? - Sabby62

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.