Autenticación por medio de LDAP (Active Directory) en PHP

Hola amigos, en esta ocasión les traemos un ejemplo de como podemos realizar una autenticación que valide nuestros datos de sesión contra los datos en Active Directory por ejemplo, todo esto usando el protocolo LDAP y el lenguaje de programación PHP.


$usuario = $_GET["user"];

        //Asigno variables para accesar al servidor LDAP
	$host = "empresa.local";
	$user = "EMPRESA\pedro";
	$pswd = "123456";

	$ad = ldap_connect($host)
	or die("Imposible Conectar");

	// Especifico la versión del protocolo LDAP
	ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3)
	or die ("Imposible asignar el Protocolo LDAP");

	// Valido las credenciales para accesar al servidor LDAP
	$bd = ldap_bind($ad, $user, $pswd)
	or die ("Imposible Validar en el Servidor LDAP");

	// Creo el DN
	$dn = "OU=Admin,DC=empresa,DC=local";

	// Especifico los parámetros que quiero que me regrese la consulta
	$attrs = array("displayname","mail","samaccountname","telephonenumber","givenname");

	// Creo el filtro para la busqueda
	$filter = "(samaccountname=$usuario)";

	$search = ldap_search($ad, $dn, $filter, $attrs)
	or die ("");

	$entries = ldap_get_entries($ad, $search);

	if ($entries["count"] > 0)
        {
		for ($i=0; $i<$entries["count"]; $i++)
                {
			echo "<p>Nombre: ".$entries[$i]["displayname"][0]."<br />";
			echo "Email: <a href=mailto:".$entries[$i]["mail"][0].">".$entries[$i]["mail"][0]."</a><br />";
			echo "Nombre de Usuario: ".$entries[$i]["samaccountname"][0]."<br />";
			echo "Telefono: ".$entries[$i]["telephonenumber"][0]."</p>";
	        }
	} else {
		echo "<p>No se ha encontrado ningun resultado</p>";
	}
	ldap_unbind($ad);

Ya con este código debemos poder validar usuarios en nuestros sitios Web mediante Active Directory (LDAP), únicamente deben cambiar los parámetros por los suyos para que funcione el código.

Esperamos que este post les haya servido y más delante publicaremos la forma de obtener los datos de sesión mediante JavaScript para completar el funcionamiento del código.

18 comentarios en “Autenticación por medio de LDAP (Active Directory) en PHP

  1. Buenisimo!! justo lo que buscaba, muchisimas gracias!!!

  2. Ami me sale que no se puede validar buu!
    estara mal mi ldap 😦

  3. What’s up to every body, it’s my first pay a visit of this blog; this blog includes amazing and really good stuff in support of readers.

  4. oiee pero me marca error de tiempo

    mira
    Warning: ldap_search(): Search: Operations error in C:\xampp\htdocs\ldapclass\simple.php on line 29

    Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\ldapclass\simple.php on line 30

    ha que se debe ??

    • Verifica que los parámetros de conexión LDAP que estás ingresando sean correctos y que si tienes conectividad con tu servidor LDAP, de igual forma verifica que tu Firewall no este bloqueando la conexión.

  5. Hola, buenos dias!!

    Veras, me ha parecido muy interesante tu post y el lunes que llegue lo probare…

    Pero unicamente lo que no me queda claro es esta porcion de codigo:

    // Creo el DN
    $dn = “OU=Admin,DC=empresa,DC=local”;

    No se, si esta porcion de codigo le tengo que cambiar algo o si quiza sea de esta forma que se tiene que quedar?

    Por lo demas, creo que esta entendible y el lunes que llego… Comienzo a revisarlo 😀

    Para ver, si lo puedo implementar.

    Pero gracias desde ya por este valioso aporte.

  6. Como yo se que despues que descomento en el fichero php.ini las funciones de LDAP el servidor esta activo y puedo trabajar con el

  7. Hola, publicaron el js para obtener los datos de sesión de win? Gracias, saludos

  8. Hola Amigo, primero te agradezco el tutorial que compartes con nosotros los novatos. Segundo ¿podrías hacer un formulario de ingreso que valide con el ldap y que te direccione a una URL? te lo agradecería enormemente.

    Saludos

  9. Cordial saludo, no me esta funcionando. Podrías ayudare a traer el nombre y cédula por favor? este es mi código:

    ?

    • error_reporting(0); $ldap_dn= “movilidadbogota\\”.$_POST[“username”]; $ldap_password = $_POST[“password”]; $ldap_con = ldap_connect(“192.168.100.120”) or die (“Could not connect to LDAP server.”); ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3); if ($ldap_con) { if ($ldap_password==””) { echo “LDAP bind failed1…”; } else { // realizando la autenticación $ldapbind = ldap_bind($ldap_con, $ldap_dn, $ldap_password); // verificación del enlace if ($ldapbind) { echo “LDAP bind successful…”.$ldap_dn; } else { echo “LDAP bind failed…”; } } }

  10. Como elimino el comentario..

  11. Buenas tardes, esto es para validar el ldap ok lo comprendo pero que pasa si necesitas jalar esa informacion del ldap a qque conteje y llene otra bd de mariadb? podrian orientarme?, tengo 13mil registros en LDAP y necesito que cuando cree la bd en mariadb al hacer loggin el usuario se llenen los campos que yo le indique es decir jale del ldap la informacion que yo requiera mas no toda, para optimizar la busqueda en mi mariadb, no se si me explique pero si pueden ayudarme lo agradeceria

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