Retroceder   Foros del Web > Programación para sitios web > PHP

Respuesta
 
Herramientas Desplegado
Antiguo 05-jun-2008, 11:35   #1 (permalink)
centrion_75 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 115
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 está desconectado   Responder Citando
Antiguo 06-jun-2008, 02:23   #2 (permalink)
centrion_75 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 115
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 está desconectado   Responder Citando
Antiguo 06-jun-2008, 02:44   #3 (permalink)
centrion_75 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 115
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 está desconectado   Responder Citando
Antiguo 06-jun-2008, 10:32   #4 (permalink)
centrion_75 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 115
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?
centrion_75 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 14:14.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93