Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

comprobar dn en ldap

Estas en el tema de comprobar dn en ldap en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/03/2008, 11:54
Avatar de SidP  
Fecha de Ingreso: febrero-2006
Ubicación: /etc/php.ini
Mensajes: 129
Antigüedad: 18 años, 2 meses
Puntos: 2
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???
  #2 (permalink)  
Antiguo 26/03/2008, 12:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
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.
  #3 (permalink)  
Antiguo 26/03/2008, 13:08
Avatar de SidP  
Fecha de Ingreso: febrero-2006
Ubicación: /etc/php.ini
Mensajes: 129
Antigüedad: 18 años, 2 meses
Puntos: 2
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
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 00:51.