Tema: Usos de LDAP
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/03/2011, 18:27
Avatar de Marvin
Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Respuesta: Usos de LDAP

Hola Sirrohan,

Primero... tienes que tener un servidor de LDAP instalado en la red.
Segundo... la estructura de la busqueda de usuarios a traves de los comandos php ldap va a depender de como este ordenado el DNS.
Tercero... para poder hacer una busqueda tienes que hacer algo como esto:
Código PHP:
    //Esta funcion le agrega el @dominio.com al usuario
    //para cuando estas en una red windows
    
function checkLDAPUser($user){
        
$arrCheck explode('@',$user);
        return 
$arrCheck[0].'@dominio.com';
    }
    
    function 
LDAP($user,$pass){
        
$ldap ldap_connect('ip.del.server.ldap');
        if (
ldap_set_option($ldapLDAP_OPT_PROTOCOL_VERSION3)) {
            
$login = @ldap_bind($ldap$user$pass);
            if(!
$login){
                
$_SESSION['isUser'] = false//cargo en sesion que no existe
                
ldap_close($ldap);
                
$_SESSION['msg'] = 'LDAP ERROR'.ldap_error($ldap); //llevo el mensaje
                
return 0;
            }else{
                
getAllInfoLDAP($user,$pass,$ldap);
                
ldap_close($ldap);
                
$_SESSION['isUser'] = true//le digo que si es usuario
                
return 1;
            }
        }else{
            
$_SESSION['isUser'] = false;
            
ldap_close($ldap);
            
$_SESSION['msg'] = 'LDAP ERROR'.ldap_error($ldap);
            return 
0;
        }
    }
    
    function 
getAllInfoLDAP($username,$password,$ds){
        
$dn[]="OU=DEFINIDOPORDNS,DC=DEFINIDOPORDNS,DC=DEFINIDOPORDNS";
        
$dn[]="OU=DEFINIDOPORDNS,DC=DEFINIDOPORDNS,DC=DEFINIDOPORDNS";
        
$id[] = $ds;
        
$id[] = $ds;
        try{
            
$attributes = array("cn""company","accountExpires","logonCount","physicalDeliveryOfficeName","mail");
            
$filter "(&(objectCategory=Person)(userPrincipalName=$username))";
            
$result ldap_search($id$dn$filter$attributes);
            
$search false;
            foreach(
$result as $value){
                if(
ldap_count_entries($ds,$value)>0){
                    
$search $value;
                    break;
                }
            }
            if(
$search){
                
$entries ldap_get_entries($ds$search);
                if(
$entries["count"] > 0){
                    
$_SESSION['USER_OFI'] = $entries[0]['physicaldeliveryofficename'][0];
                    
$_SESSION['USER_MBO'] = $entries[0]['logoncount'][0];
                    
$_SESSION['USER_CNX'] = $entries[0]['cn'][0];
                    return;
                }else{
                    
$_SESSION['USER_OFI'] = '';
                    
$_SESSION['USER_MBO'] = '';
                    
$_SESSION['USER_CNX'] = '';
                    return;
                }
            }else{
                
$_SESSION['USER_OFI'] = '';
                
$_SESSION['USER_MBO'] = '';
                
$_SESSION['USER_CNX'] = '';
                return;
            }
            return;
        }catch(
Exception $e){
            return;
        }
    } 
Con esto voy a buscar datos por defecto que tiene el dominio para sacar el nombre y otras cosas mas del usuario (si se encuentran definidos)

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!