en la aplicación que estoy desarrollando, a la hora de identificar un usuario vía LDAP me surge el siguiente problema:
Código PHP:
Warning: ldap_compare() [function.ldap-compare]: Compare: No such attribute in C:xampphtdocsServicioTutoriasLDAPejemplo.php on line 56
Código PHP:
<?php
// La secuencia básica para trabajar con LDAP es conectar, autentificarse,
// buscar, interpretar el resultado de la búsqueda y cerrar la conexión.
echo "<h3>Prueba de consulta LDAP</h3>";
echo "Conectando ...";
$ds=ldap_connect("servidorLDAP"); // Debe ser un servidor LDAP válido!
echo "El resultado de la conexion es ".$ds."<p>";
if ($ds) {
echo "Autentificandose ...";
$r=ldap_bind($ds); // Autentificación anónima, típicamente con
// acceso de lectura
echo "El resultado de la autentificacion es ".$r."<p>";
$sr=ldap_search($ds,"ou=personas,o=unirioja.es,dc=unirioja,dc=es", "uid=alumno1");
if($sr==false)
{
echo"Hay algun error</br>";
}
else
{
echo "El resultado de la busqueda es ".$sr."<p>";
echo "El numero de entradas devueltas es ".ldap_count_entries($ds,$sr)."<p>";
echo "Recuperando entradas ...<p>";
$datosldap = ldap_get_entries($ds, $sr);
echo "Devueltos datos de ".$datosldap["count"]." entradas:<p>";
//ver nombre de los atributos
$entrada = ldap_first_entry($ds, $sr);
$atributos = ldap_get_attributes($ds, $entrada);
echo $atributos["count"]." atributos contenidos en esta entrada:<p>";
for ($i=0; $i < $atributos["count"]; $i++)
echo $atributos[$i]."<br>";
//autentificación usuario
$pass="alumno1";
$dn = $datosldap[$i]["dn"];
$r=ldap_compare($ds,$dn,"userPassword", $pass);
if ($r === -1)
{
$msg = "Error datos"; //Contraseña incorrecta
}
elseif ($r === true)
{
echo"Correcto</br>";
$datos[0]= $datosldap[$i]["cn"][0];
$datos[1]= $datosldap[$i]["givenname"][0];
$datos[2]= $datosldap[$i]["sn"][0];
$datos[4]= $datosldap[$i]["mail"][0];
}
}
echo "Cerrando conexion";
ldap_close($ds);
} else {
echo "<h4>Ha sido imposible conectar al servidor LDAP</h4>";
}
?>