Foros del Web » Programando para Internet » PHP »

Problemas con la autentificación LDAP

Estas en el tema de Problemas con la autentificación LDAP en el foro de PHP en Foros del Web. Hola a todos, 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: ...
  #1 (permalink)  
Antiguo 05/06/2008, 11:35
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años
Puntos: 0
Problemas con la autentificación LDAP

Hola a todos,
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:
Warningldap_compare() [function.ldap-compare]: CompareNo such attribute in C:xampphtdocsServicioTutoriasLDAPejemplo.php on line 56 
Sin embargo el nombre del atributo es correcto. A continuación detallo el fichero donde esta :

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>";
}
?>
  #2 (permalink)  
Antiguo 06/06/2008, 02:23
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años
Puntos: 0
Respuesta: Problemas con la autentificación LDAP

Ya he encontrado el fallo, que era el siguiente:

tenía puesto:
Código PHP:
 $dn $datosldap[$i]["dn"]; 
y en lugar de poner $i lo he sustituido por 0 quedando así:
Código PHP:
 $dn $datosldap[0]["dn"]; 
  #3 (permalink)  
Antiguo 06/06/2008, 02:44
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años
Puntos: 0
Respuesta: Problemas con la autentificación LDAP

Ahora tengo la siguiente duda:

Para ver si una contraseña suministrada es igual a la almacenada en el LDAP,¿ es necesario encriptarla?

¿o vale con compararla sin más?
  #4 (permalink)  
Antiguo 06/06/2008, 10:32
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años
Puntos: 0
Respuesta: Problemas con la autentificación LDAP

El caso es que cuando utilizo la función:
ldap_compare($ds,$dn,"userPassword",$pass),me devuelve false y estoy seguro de que las contraseñas que inserto estan bién. Si comparo con otros atributos como mail, si que lo hace bién.

Además, cuando muestro la contraseña para ver si tiene o no,

Código PHP:
    echo "La contraseña encriptada es: "$datosldap[$i]["userpassword"][0] ."</br>"
, si pongo el atributo userPassword, con "P" mayúscula, no devuelve ningún resultado, pero si lo hago con ´minúscula sí. Sale la información encriptada.

¿Alguién me sabría decir si estoy haciendo algo mal, o por contra es que en el servidor LDAP, no hay permisos de lectura sobre ese atributo?
  #5 (permalink)  
Antiguo 19/06/2009, 08:55
 
Fecha de Ingreso: junio-2009
Mensajes: 1
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas con la autentificación LDAP

Creo que para poder comparar las contraseñas, va a ser necesario enviarla encriptada.
Todavía no encontré como, pero en eso estoy.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 09:00.