Autenticación con credenciales LDAP (Active Directory) en C#

Hola amigos, en esta ocasión les traemos un pequeño ejemplo para logearnos en una aplicación de escritorio C# con las credenciales que tenemos registradas en Active Directory o cualquier servicio de directorio que trabaje con el protocolo LDAP.

Para este ejemplo necesitaremos implementar las siguientes librerías:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.DirectoryServices;
using System.Management;
using System.Security.Principal;

Ahora vamos a proceder con el código, para que este ejemplo funcione correctamente debemos estar en una red con un controlador de dominio, no es necesario que nuestra computadora se encuentre dentro del dominio pero si que esté en la red.

En este ejemplo la aplicación nos solicita que ingresemos el nombre de usuario, la contraseña y el dominio en el cual nos vamos a autenticar.


 private void btnIniciar_Click(object sender, EventArgs e)
 {
            string dominio, user, pass;

            dominio = txtDominio.Text;
            user = txtUsuario.Text;
            pass = txtPass.Text;

            //Aquí va el path URL del servicio de directorio LDAP
            string path = "LDAP://lan.ejemplo.mx/DC=lan, DC=ejemplo, DC=mx";

            if (estaAutenticado(dominio, user, pass, path) == true)
            {
                MessageBox.Show("Autenticado en LDAP!");
            }
            else
            {
                MessageBox.Show("Error al Autenticar");
            }
        }

        public bool estaAutenticado(string dominio, string usuario, string pwd, string path)
        {
            //Armamos la cadena completa de dominio y usuario
            string domainAndUsername = dominio + @"\" + usuario;
            //Creamos un objeto DirectoryEntry al cual le pasamos el URL, dominio/usuario y la contraseña
            DirectoryEntry entry = new DirectoryEntry(path, domainAndUsername, pwd);
            try
            {
                DirectorySearcher search = new DirectorySearcher(entry);
                //Verificamos que los datos de logeo proporcionados son correctos
                SearchResult result = search.FindOne();
                if (result == null)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
        }

Con este código debemos ser capaces de lograr la autenticación por medio de LDAP en C# y lograr sistemas de login mas sencillos y sin tener que crear usuario y contraseñas para cada una de nuestras aplicaciones.

Si quieres descargar el ejemplo completo aquí el link http://www.mediafire.com/?pm1w76rhf4p52nr

Esperamos que este ejemplo les haya sido útil y cualquier duda o comentario estamos para ayudar. También pueden seguirnos en nuestra cuenta de Twitter @FASoftware

16 comentarios en “Autenticación con credenciales LDAP (Active Directory) en C#

  1. PROBANDO EL CODIGO MUCHAS GRACIAS

  2. MUY BUEN EJEMPLO, GRACIAS

  3. tengo una inquietud, como puedo obtener el path URL del servicio del directorio LDAP, favor su ayuda .. gracias.

  4. Muy bueno el ejmplo , Como puedo a partir de este ejemplo hacer consultas Ldap al active directory y como me las mostraría

  5. En un listbox o una datagridvew

  6. Muchas gracias! muy util, con tu permiso usaré este código par mi monografía 🙂

  7. tengo dudas sobre el string path “string path = “LDAP://lan.ejemplo.mx/DC=lan, DC=ejemplo, DC=mx”; ”
    como es que se crea?
    que variables lleva?
    me podrias explicar mas sobre como crearlo.

  8. igual, como va conformado la ca
    dena??

  9. Muchas gracias, lo probé y funciona bien, para aquellos con la duda del LDAP:// tienen que configurar primeramente un servidor, yo lo monte con virtualbox e hice que el me provea de la conexión de Internet y no es necesario estar unido al dominio. Aquí la liga para configurar tu servidor https://www.youtube.com/channel/UCvQ3z3XjdwaqPNkmGFexr-w

  10. muchas gracias

  11. Gracias a ti, no dejes de visitarnos.

  12. Enorme, que buen aporte. Gracias!!!

  13. Gracias a ti, no dejes de visitarnos. Saludos.

  14. no me funciona a que puede deberse me sale un error que dice “Error al autentificer” y luego “el servidor no es funcional”, pero el active directory es funcional de hecho tengo equipos conectados a este active directory

  15. como elimino los comentarios?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s