Foros del Web » Programando para Internet » PHP »

Búsqueda con LDAP - PHP

Estas en el tema de Búsqueda con LDAP - PHP en el foro de PHP en Foros del Web. Hola chic@s! Espero estén todos bien. Les escribo porque aun sigo optimizando mi código, esta vez para autenticación con LDAP de la empresa. Les cuento, ...
  #1 (permalink)  
Antiguo 12/08/2011, 07:13
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Búsqueda con LDAP - PHP

Hola chic@s! Espero estén todos bien.

Les escribo porque aun sigo optimizando mi código, esta vez para autenticación con LDAP de la empresa.

Les cuento, cuando se inicia sesión, primero hago la conexión con LDAP de la empresa, verifico que el username y password sean iguales a los registrados para conocer si pertenece a la empresa y si todo es correcto, lo verifico en una tabla de BD que son los usuarios que pueden utilizar el sistema, es decir, no todos los emplead ode la empresa pueden utilizar el sistema.

El caso es que todo me funciona para inicio de sesión.

Existe un módulo que lo utiliza el administrador de la página, el cual va a tener la potestad de incluir o no a los usuarios para utilizar dicho sistema. Lo que quiero hacer es realizar dicha validación de verificar con LDAP antes de registrar o modificar el username de un usuario nuevo o ya existente.

Lo he realizado con las funciones de ldap_search y ldap_compare, siguiendo los ejemplos que ponen en el API de PHP, pero siempre me aparece que algo no es válido.

Verifique el nombre del atributo al cual buscar/comparar ... pero me sigue dando el mismo error..

Les muestro los códigos para ver si me pueden ayudar:

Utilizando ldap_search
Código PHP:
function busquedaLDAP($username$password){

     
$ldapconn conectarLDAP();
    
    
// Verificación del establecimiento de la conexión con algún servidor
    
if(!$ldapconn[0] && !$ldapconn[1]) {
        
        
// Conexión Fallida. Devuelve código de error asociado (1)
        
return 1;

    
// Alguna conexión Exitosa
    
} else {
        
        
// Nombre Relativo Distinguido del usuario en el LDAP
        
$ldaprdn $username;

        
// Contraseña del usuario en el Directorio Activo
        
$ldappass $password;
        
        
// Realizando la autenticación del usuario en el(los) servidor(es) LDAP
        // conectado(s)
        
$ldapbind  autenticarLDAP($ldapconn[0], $ldaprdn$ldappass);
        
$ldapbind2 autenticarLDAP($ldapconn[1], $ldaprdn$ldappass);

        
// Verificación del enlace resultante
        
if ($ldapbind || $ldapbind2) {

            
$busqueda=ldap_search($ldapconn,"ou=Users,dc=intra""samAccountName=$username"); 
            
                
$values ldap_get_values($ldapconn$busqueda);

                echo 
$values["count"] . " resultados de la búsqueda.<br />";

                for (
$i=0$i $values["count"]; $i++) {
                    echo 
$values[$i] . "<br />";
                }

              
/*  $info = ldap_get_entries($ldapconn, $busqueda);

                echo $info["count"]["Users"] ." entradas devueltas\n";*/

                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]);
            
                
// Autenticación Exitosa (usuario pertenece a Activo). Devuelve código de éxito (0)
                
return 0;
            

        } else {
        
            
desconectarLDAP($ldapconn[0]);
            
desconectarLDAP($ldapconn[1]);
            
            
// Autenticación Fallida (usuario no pertenece a directorio Activo). Devuelve código de error asociado (2)
            
return 2;

        }

    }


Utilizando ldap_compare
Código PHP:
function busquedaLDAP($username$password){

     
$ldapconn conectarLDAP();
    
    
// Verificación del establecimiento de la conexión con algún servidor
    
if(!$ldapconn[0] && !$ldapconn[1]) {
        
        
// Conexión Fallida. Devuelve código de error asociado (1)
        
return 1;

    
// Alguna conexión Exitosa
    
} else {
        
        
// Nombre Relativo Distinguido del usuario en el LDAP 
        
$ldaprdn $username;

        
// Contraseña del usuario en el Directorio Activo
        
$ldappass $password;
        
        
// Realizando la autenticación del usuario en el(los) servidor(es) LDAP
        // conectado(s)
        
$ldapbind  autenticarLDAP($ldapconn[0], $ldaprdn$ldappass);
        
$ldapbind2 autenticarLDAP($ldapconn[1], $ldaprdn$ldappass);

        
// Verificación del enlace resultante
        
if ($ldapbind || $ldapbind2) {

            
$dn "ou=Users, dc=intra";
            
$value "samAccountName";
            
$attr "$username"

            
// compare value
            
$r=ldap_compare($ldapconn$dn$attr$value);

            if (
$r === -1) {
                echo 
"Error: ".ldap_error($ldapconn);
            
            } elseif (
$r === TRUE) {
        
                echo 
"Username correct.";
                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]);
            
                
// Autenticación Exitosa (usuario pertenece a directorio Activo). Devuelve código de éxito (0)
                
return 0;
            
            } elseif (
$r === FALSE) {
                echo 
"Wrong guess! Username incorrect.";
                
                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]);
            
                
// Autenticación Fallida (usuario no pertenece a directorio Activo). Devuelve código de error asociado (2)
                
return 2;

            }

        }

    }

Esto es lo que me aparece cuando utilizo ldap_search
Cita:
Warning: Wrong parameter count for ldap_get_values()
Esto es lo que me arroja cuando utilizo ldap_compare:
Cita:
ldap_compare(): supplied argument is not a valid ldap link resource
Espero su ayuda amigos!
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking

Última edición por eliza_ralves; 12/08/2011 a las 07:32
  #2 (permalink)  
Antiguo 12/08/2011, 07:34
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Búsqueda con LDAP - PHP

Y aquí hago la llamada a la función:

Código PHP:

    
// Obtener valores de campos del formulario de ingreso de usuario
    
$username     $_POST['username'];
    
$rol        $_POST['rol'];

         
// Verificar si el usuario a registrar pertenece al Directorio Activo

        
$verificaLDAP busquedaLDAP($username$password);
        
        
// El nombre de usuario pertenece al Directorio Activo
        
if ($verificarLDAP == 0){

            
// Verificar si el nombre del usuario a registrar ya está siendo 
            // utilizado en el sistema
            
$yaExiste perteneceSPO2($username);

            
//El nombre de usuario ya se encuentra registrado
            
if($yaExiste){

                
// Volver a formulario de ingreso de usuario
                
$_SESSION['error']          = 3;
                
$_SESSION['errorUsername'] = $username;
                
$_SESSION['errorRol']      = $rol;
                
$_SESSION['errorDiscU']    = $disciplina;
                
$_SESSION['errorOficU']    = $oficina;
                
header("Location: agregarUsuario.php");

            
// El nombre de usuario no se encuentra registrado en el sistema
            
} else {

                
// Registrar los datos del nuevo usuario en la BD.
                
insertarNuevoUsuario($username$disciplina$oficina$rol);

                
// Volver a página de presentación del módulo de perfiles de usuario, 
                // mostrando mensaje de éxito correspondiente
                
$_SESSION['exito'] = 1;
                
$_SESSION['errorUsername']    = NULL;
                
$_SESSION['errorRol']         = NULL;
                
$_SESSION['errorOficU']       = NULL;
                
$_SESSION['errorDiscU']       = NULL;
                
header("Location: principal_cuentas.php");

            }
        }
        
// El nombre de usuario no pertenece al Directorio Activo 
        
else {
        
                
// Volver a formulario de ingreso de usuario
                
$_SESSION['error']          = 3;
                
$_SESSION['errorUsername'] = $username;
                
$_SESSION['errorRol']      = $rol;
                
$_SESSION['errorDiscU']    = $disciplina;
                
$_SESSION['errorOficU']    = $oficina;
                
header("Location: agregarUsuario.php");
        
        } 
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking
  #3 (permalink)  
Antiguo 12/08/2011, 13:14
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Búsqueda con LDAP - PHP

Hola de nuevo, estoy intentando con otro código , donde $userActual es el usuario logueado, y $username es el usuario a ingresar y a comprobar

Código PHP:
function busquedaLDAP($userActual$password$username){

     
$ldapconn conectarLDAP();
    
    
// Verificación del establecimiento de la conexión con algún servidor
    
if(!$ldapconn[0] && !$ldapconn[1]) {
        
        
// Conexión Fallida. Devuelve código de error asociado (1)
        
return 1;

    
// Alguna conexión Exitosa
    
} else {
        
        
// Nombre Relativo Distinguido del usuario en el LDAP (
        
$ldaprdn $userActual;

        
// Contraseña del usuario en el Directorio Activo
        
$ldappass $password;
        
        
// Realizando la autenticación del usuario en el(los) servidor(es) LDAP
        // conectado(s)
        
$ldapbind  autenticarLDAP($ldapconn[0], $ldaprdn$ldappass);
        
$ldapbind2 autenticarLDAP($ldapconn[1], $ldaprdn$ldappass);

        
// Verificación del enlace resultante
        
if ($ldapbind || $ldapbind2) {
            
             
$binddn "ou=Users,dc=intra";
             
$filter "(&(samaccountname=".$userActual.") (objectClass=user)(objectCategory=person) )"
             
$fields = array("samaccountname"); 
             
$search=ldap_search($ldapconn$binddn$filter$fields); 


//$search=ldap_search($ldapconn,"ou=Users,dc=intra", "samaccountname=$username");  
     
            
if($search==false) { 
                echo
"Hay algun error</br>"
        
                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]);
            
                
// Autenticación Fallida (usuario no pertenece a directorio Activo). Devuelve código de error asociado (2)
                
return 2;
        
            }  
            else { 
                echo 
"El resultado de la busqueda es ".$search."<p>"
                
print_r($search);
     
                echo 
"El numero de entradas devueltas es ".ldap_count_entries($ldapconn,$search)."<p>"
     
                echo 
"Recuperando entradas ...<p>"
                
$datosldap ldap_get_entries($ldapconn$search); 
                echo 
"Devueltos datos de ".$datosldap["count"]." entradas:<p>"
                
//ver nombre de los atributos 
                
$entrada ldap_first_entry($ldapconn$search); 

                
$atributos ldap_get_attributes($ldapconn$entrada); 

                echo 
$atributos["count"]." atributos contenidos en esta entrada:<p>"

                for (
$i=0$i $atributos["count"]; $i++) 
                    echo 
$atributos[$i]."<br>"

                
//comparación con usuario 
                
$dn $datosldap[0]["dn"]; 
                
$r=ldap_compare($ldapconn,$dn,"samaccountname"$username); 
         
                if (
$r === -1) { 
                    
$msg "Error datos"//Contraseña incorrecta 
                

                elseif (
$r === true) { 
                    echo
"Correcto</br>"
            
                    
desconectarLDAP($ldapconn[0]);
                    
desconectarLDAP($ldapconn[1]);
            
                    return 
0;            
                } 
            } 
            
        } else { 
            
            
desconectarLDAP($ldapconn[0]);
            
desconectarLDAP($ldapconn[1]);
            
            
// Autenticación Fallida (usuario no pertenece a directorio Activo). Devuelve código de error asociado (2)
            
return 2;
        } 
    }

Pero me aparecen estos errores :

Cita:
El resultado de la busqueda es Array

Array ( [0] => Resource id #11 [1] => Resource id #12 )

Warning: ldap_count_entries(): supplied argument is not a valid ldap link resource

El numero de entradas devueltas es

Recuperando entradas ...

Warning: ldap_get_entries(): supplied argument is not a valid ldap link resource

Devueltos datos de entradas:

Warning: ldap_first_entry(): supplied argument is not a valid ldap link resource

Warning: ldap_get_attributes(): supplied argument is not a valid ldap link resource

atributos contenidos en esta entrada:

Warning: ldap_compare(): supplied argument is not a valid ldap link resource
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking
  #4 (permalink)  
Antiguo 15/08/2011, 10:11
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Búsqueda con LDAP - PHP

Hola!

Ya intenté con otro código y ya no me aparecen los errores de antes, ahora lo que no me hace es entrar en donde llamo a la función getAllInfoLDAP, en donde hago la comparación del atributo a comprar "samaccountname" y con el valor que quiero que compare "$username"

Aqui los códigos de las funciones:

Código PHP:

function getAllInfoLDAP($username,$ldapconn){
        
$dn="ou=Users,dc=intra";
        
$valor "$username";
        
$atributo "samaccountname"

        
// comparar los valores
        
$r=ldap_compare($ldapconn$dn$atributo$valor);

        return 
$r;


function 
LDAP($userActual,$password,$username){

        
$ldapconn conectarLDAP();

        
$ldaprdn $userActual;
        
$ldappass $password;
        
        
$ldapbind  autenticarLDAP($ldapconn[0], $ldaprdn$ldappass);
        
$ldapbind2 autenticarLDAP($ldapconn[1], $ldaprdn$ldappass);

        if(!
$ldapbind || !$ldapbind2){

            
$fgetAllInfoLDAP($username,$ldapconn);
            
            if (
$f == true) {
        
                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]);                
                return 
0;     
                
            } else {
                             
                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]); 
                return 
1;
            } 
        } else {
                         
                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]);
                return 
4;
        }


Qué estaré haciendo mal para que no me entre en la condición deseada?

__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking

Última edición por eliza_ralves; 15/08/2011 a las 12:23
  #5 (permalink)  
Antiguo 16/08/2011, 14:05
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Búsqueda con LDAP - PHP

Por lo visto no hay muchas personas que me puedan ayudar con este tema.

Seguí en mi búsqueda y logre, al menos, detectar un usuario que sí posee permisos para realizar búsquedas en LDAP.

Ahora lo que me ocurre es que no me autentica como es debido, si realizo la comparación (ldap_compare) se pasa por alto la validación;y si realizo la búsqueda (ldap_search) no me devuelve ningún resultado, es decir, un array de atributos vacío.

He comprobado cada uno de los atributos, y están bien... no entiendo porque no me hace el filtro correspondiente:

Código PHP:

function getAllInfoLDAP($username,$ldapconn){
        
$dn[]="OU=Users,DC=intra";
        
$valor "TP\\$username";
        
$atributo "samaccountname"

        
$r=ldap_compare($ldapconn$dn$atributo$valor);

        return 
$r;
}

function 
LDAP($userActual,$password,$username){
        
        
$ldapconn conectarLDAP();

        
$ldaprdn "TP\$userActual";
        
$ldappass $password;
        
        
$ldapbind  autenticarLDAP($ldapconn[0], $ldaprdn$ldappass);
        
$ldapbind2 autenticarLDAP($ldapconn[1], $ldaprdn$ldappass);

        if(!
$ldapbind || !$ldapbind2){

            
$fgetAllInfoLDAP($username,$ldapconn);
            
            if (
$f == 0) {
                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]);                
                return 
'0';     
                
           } else {
           
                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]); 
                return 
'2';
            } 
        } else {

                
desconectarLDAP($ldapconn[0]);
                
desconectarLDAP($ldapconn[1]);
                return 
'2';
        }
        return 
$f;

__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking

Última edición por eliza_ralves; 17/08/2011 a las 06:11
  #6 (permalink)  
Antiguo 17/08/2011, 08:55
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Errores en búsqueda LDAP

Hola! Quería saber si me pueden ayudar con el problema que tengo:

Cuando realizo la búsqueda con LDAP en PHP me devuelve como resultado de apalicar la función :

Código PHP:
ldap_search($ldapconn,$dn,$filtro,$solonecesito); 
Lo siguiente:

Cita:
Array ( [0] => Resource id #11 [1] => Resource id #12 )
He buscado, pero no me dice nada específico del error.

Código PHP:
function LDAP($userActual,$password,$username){

    
$ldapconn conectarLDAP();

    
$ldaprdn "TP\\$userActual";
    
$ldappass $password;
        
    
$ldapbind  autenticarLDAP($ldapconn[0], $ldaprdn$ldappass);
    
$ldapbind2 autenticarLDAP($ldapconn[1], $ldaprdn$ldappass);

    if(
$ldapbind || $ldapbind2){
    
    
$dn "OU=Users,DC=intra";
    
$filtro="(&(objectCategory=Person)(objectClass=user)(sAMAccountName=TP\$username))";
    
$solonecesito = array( "ou""sn""givenname""sAMAccountName");

     
$sr=ldap_search($ldapconn,$dn,$filtro,$solonecesito);
        
     
// $info = ldap_get_values ($ldapconn,$info,$filtro);
        
if($sr["count"] > 0){ 
            
            
$entry ldap_first_entry($ldapconn$sr); 
            
$return_array ldap_get_attributes($ldapconn$entry); 
            
            if(
$return_array){ 
    
                for (
$i=0;$i<$return_array['count'];$i++) { 
                      
                    print(
$return_array[$i]); 
                    print(
$return_array[$return_array[$i]][0]); 
                } 
            } 
        }
        
        
desconectarLDAP($ldapconn[0]);
        
desconectarLDAP($ldapconn[1]);
        return 
$sr;

    } else {
        
        
desconectarLDAP($ldapconn[0]);
        
desconectarLDAP($ldapconn[1]);
 
        
// Autenticación Fallida (usuario no pertenece a directorio Activo 
        
return 2;
    }

__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking
  #7 (permalink)  
Antiguo 17/08/2011, 10:20
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Exclamación Respuesta: Búsqueda con LDAP - PHP

A pesar de todos los intentos, no he podido hacer que me devuelva los resultados de la búsqueda, intente con un usuario válido con permisos para realizar búsquedas en LDAP.

Aunque me autentica, es decir, realiza la conexión ldapbind(), al momento de realizar la búsqueda, me devuelve:

Cita:
Array ( [0] => Resource id #11 [1] => Resource id #12 )
Pero, si al momento de iniciar sesión, me realiza bien la verificación con el username, y ahora que estoy dentro del sistema, le envío mi usuario logueado, la contraseña con la cual me verificó, y el username que quiero registrar, es decir, con el que quiero hacer la verificación para luego ingresar en la BD....... porque no me devuelve la búsqueda, aún especificando bien todos los atributos y valores????


Espero un alma caricativa me pueda ayudar al respecto. Gracias
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking
  #8 (permalink)  
Antiguo 17/08/2011, 15:28
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Errores en búsqueda LDAP

Se supone que no es un error, pero deberias usar un foreach para poder sacar los resultados de esta manera:
Código PHP:
Ver original
  1. $result = ldap_search($id, $dn, $filter, $attributes);
  2. //variable flag para saber si encuentro datos
  3. $search = false;
  4. foreach($result as $value){
  5.     if(ldap_count_entries($ds,$value)>0){
  6.         $search = $value;
  7.         break;
  8.     }
  9. }
  10. //si tengo datos los saco a mis variables
  11. if($search){
  12.     $entries = ldap_get_entries($ds, $search);
  13.     if($entries["count"] > 0){
  14.         $oficina = $entries[0]['physicaldeliveryofficename'][0];
  15.         $entradas = $entries[0]['logoncount'][0];
  16.         $cn = $entries[0]['cn'][0];
  17.         return;
  18.     }else{
  19.         $oficina = 'Sin datos';
  20.         $entradas = 'Sin datos';
  21.         $cn = 'Sin datos';
  22.         return;
  23.     }
  24. }else{
  25.     $oficina = 'No encontrado';
  26.     $entradas = 'No encontrado';
  27.     $cn = 'No encontrado';
  28.     return;
  29. }
Te dejo mi funcion completa en caso que sirva de algo:
Código PHP:
Ver original
  1. $ldap = ldap_connect('xxx.xxx.xxx.xxx');
  2. if (ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3)) {
  3.     $login = @ldap_bind($ldap, $user, $pass);
  4.     if(!$login){
  5.         ldap_close($ldap);
  6.         $arr['msg'] = 'LDAP ERROR'.ldap_error($ldap);
  7.         $arr['failure'] = 'true';
  8.         return $arr;
  9.     }else{
  10.         //Con este formato puedes buscar en mas de un directorio en el AD
  11.         $dn[]="OU=OtroDirectorio,DC=dominio,DC=cl";
  12.         $dn[]="OU=UnDirectorio,DC=dominio,DC=cl";
  13.         $id[] = $ldap;
  14.         $id[] = $ldap;
  15.         $attributes = array("cn", "company","accountExpires","logonCount","physicalDeliveryOfficeName","mail");
  16.         $filter = "(&(objectCategory=Person)(userPrincipalName=$username))";
  17.         $result = ldap_search($id, $dn, $filter, $attributes);
  18.         $search = false;
  19.         foreach($result as $value){
  20.             if(ldap_count_entries($ldap,$value)>0){
  21.                 $search = $value;
  22.                 break;
  23.             }
  24.         }
  25.         if($search){
  26.             $entries = ldap_get_entries($ldap, $search);
  27.             if($entries["count"] > 0){
  28.                 $_SESSION['USER_OFI'] = $entries[0]['physicaldeliveryofficename'][0];
  29.                 $_SESSION['USER_MBO'] = $entries[0]['logoncount'][0];
  30.                 $_SESSION['USER_CNX'] = $entries[0]['cn'][0];
  31.                 return;
  32.             }else{
  33.                 $_SESSION['USER_OFI'] = '';
  34.                 $_SESSION['USER_MBO'] = '';
  35.                 $_SESSION['USER_CNX'] = '';
  36.                 return;
  37.             }
  38.         }else{
  39.             $_SESSION['USER_OFI'] = '';
  40.             $_SESSION['USER_MBO'] = '';
  41.             $_SESSION['USER_CNX'] = '';
  42.             return;
  43.         }
  44.         ldap_close($ldap);
  45.         $arr['success'] = 'true';
  46.         return $arr;
  47.     }
  48. }else{
  49.     ldap_close($ldap);
  50.     $arr['msg'] = 'LDAP ERROR'.ldap_error($ldap);
  51.     $arr['failure'] = 'true';
  52.     return $arr;
  53. }
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Última edición por Marvin; 17/08/2011 a las 15:31 Razón: Agregar informacion relevante a la funcion
  #9 (permalink)  
Antiguo 18/08/2011, 07:01
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Exclamación Respuesta: Búsqueda con LDAP - PHP

Hola marvin, es lo que he estado haciendo pero sencillamente no aparece ningún resultado en la búsqueda, siempre me dá "false".


Ya probé cambiándole el nombre de los atributos a buscar.... pero nada.


Verifiqué si era problema de permisos : firewall, entre otros... y nada de eso aplica porque ademas poseo un usuario con permisos para la búsqueda ($userActual y $password).


Asimismo, intenté con la función ldap_compare, pero es el mismo procedimiento, no me devuelve ningún resultado.

Resultado: Array ( [0] => no search [1] => no search [2] => no search )
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking

Última edición por eliza_ralves; 18/08/2011 a las 11:47
  #10 (permalink)  
Antiguo 19/08/2011, 07:17
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Búsqueda con LDAP - PHP

Hola MArvin, el problema estaba en el filtro.

Antes lo tenía así:

Código PHP:
  $dn "OU=Users,DC=intra"
    
$filtro="(&(objectCategory=Person)(objectClass=user)(sAMAccountName=TP\$username))"
    
$solonecesito = array( "ou""sn""givenname""sAMAccountName"); 

     
$sr=ldap_search($ldapconn,$dn,$filtro,$solonecesito); 
Y me funciona de esta manera:

Código PHP:
$dn[]="OU=UsersDC=intra";
                
$id[] = $ldapconn;
                
$attributes = array("sAMAccountName");
                
$filter "(&(ObjectClass=User)(ObjectCategory=person)(sAMAccountName=$username))";
                
$result = @ldap_search($id$dn$filter$attributes); 
Saludos y Gracias!
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking

Última edición por eliza_ralves; 19/08/2011 a las 09:37

Etiquetas: errores, ldap, tabla, usuarios
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:19.