Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   comprobar dn en ldap (http://www.forosdelweb.com/f68/comprobar-dn-ldap-569482/)

SidP 26/03/2008 11:54

comprobar dn en ldap
 
hola comunidad
mi problema es el siguiente...estoy autentificando contra un server LDap....
Código:

        public function connect ($userDn=null, $userPwd=null) {
                if (is_resource($this->_ds)) {
                        ldap_unbind($this->_ds);
                }
                if ($userDn===null) {
                        $userDn=$this->_ldapBindDn;
                        $userPwd=$this->_ldapBindPass;
                }
                $result=false;
                $this->_ds=ldap_connect($this->_ldapServer);
                if ($this->_ds) {
                        $result=ldap_bind($this->_ds, $userDn, $userPwd);
                }
                return $result;
        }

        public function getUserDn ($username) {
                if (!is_resource($this->_ds)) $this->connect();
                $result=null;
                $filter=str_replace('%u', $username, $this->_userFilter);
                $sr=ldap_search ($this->_ds, $this->_userBaseDn, $filter, array('dn'));
                $info=ldap_get_entries($this->_ds, $sr);
                if ($info['count']==1) {
                        $result=$info[0]['dn'];
                } else {                       
                        $result=null;
                }
       
                return $result;
        }

hasta ahi todo perfecto...me logueo sin problemas...mi dnBase es
Código:

"ou=Personas,dc=example,dc=com
el problema es que es global...es decir coje usuarios de dos ou
Código:

GroupBaseDn="ou=Profesores,ou=Personas,dc=example,dc=com
y de
GroupBaseDn="ou=Estudiantes,ou=Personas,dc=example,dc=com

pero necesito diferenciar cuando es un estudiante o un profesor....alguna idea de como podria hacerlo..he estado probando con ldap_search pero nada todavia...alguna sugerencia???

GatorV 26/03/2008 12:04

Re: comprobar dn en ldap
 
Estuve viendo un poco la documentación de ldap_search, y necesitarías yo creo pasarle en tu array, el 'dn' y el 'ou' para que también te regrese el ou y puedas diferenciar si es Profesor o Estudiante.

Saludos.

SidP 26/03/2008 13:08

Re: comprobar dn en ldap
 
gracias por responder GatorV problema resuelto
lo que hice fue definir otro DNBase mas con otro filtro tambien
Código:

ProfBaseDn="ou=Profesores,ou=Personas,dc=example,dc=com"
ProfFilter="(&(memberUid=%u)(objectClass=posixGroup))" ProfNameAttribute="uid"

y chequear despues que el usuario se logueara contra ese DNBase con la funcion
Código:

public function isProfessor($userDN){
      $search = ldap_search($this->_ds,$this->_profBaseDn,"uid=".$userDN."");
      $enID = ldap_first_entry($this->_ds,$search);
      if($enID)
            return true;
      else
            return false;
        }

asi me funciona...
Gracias :adios:


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

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