Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Problemas con la autentificación LDAP (http://www.forosdelweb.com/f18/problemas-con-autentificacion-ldap-593755/)

centrion_75 05/06/2008 11:35

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>";
}
?>


centrion_75 06/06/2008 02:23

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"]; 


centrion_75 06/06/2008 02:44

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?

centrion_75 06/06/2008 10:32

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?:'(

_Ricknoz 19/06/2009 08:55

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.


La zona horaria es GMT -6. Ahora son las 08:22.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.