Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Conectar al active directory con PHP

Iniciado por alberizo, 16 de Julio de 2007, 05:32:32 PM

« anterior - próximo »

alberizo

Nose si es el foro más adecuado, pero es que no se me ocurre donde preguntarlo y me imagino que aquí hay gente que controla del tema, el caso es que necesito realizar una conexión en una web (de intranet) al active directory de un w2k3 para obtener a que grupo pertene un usuario.
La conexión me la realiza perfectamente, pero cuando hago la búsqueda falla, y no me detalla mucho el fallo, así que no se por donde van los tiros.

El código es este:

<?php
$ds     
'aranguren2003.aranguren.com';
$dn     'ou=usuarios, dc=aranguren2003, dc=aranguren, dc=com';
$filtro 'cn=*';

$conexion ldap_connect&#40;$ds&#41; or die&#40;'No conexion'&#41;;

ldap_set_option&#40;$conexion, LDAP_OPT_PROTOCOL_VERSION,3&#41;;
ldap_set_option&#40;$conexion, LDAP_OPT_REFERRALS,0&#41;;

$bind     ldap_bind&#40;$conexion&#41; or die&#40;'No bind'&#41;;
$busqueda ldap_search&#40;$conexion, $dn, $filtro&#41; or die&#40;'No busqueda'&#41;; 

echo 'Resultado&#58; '.$busqueda;

ldap_close&#40;$conexion&#41;;
?>



las dos lineas de 'ldap_set_option' las puse porque lei que a mucha gente le daba problemas bajo w2k3 y que poniendo estas dos lienas funcionaba, pero a mi no, me sale este error de cualquiera de las maneras

Citar
Warning: ldap_search() [function.ldap-search]: Search: Operations error in I:\Program Files\servidor\pruebaLdap.php on line 12
No busqueda

dejo unas capturas del active directory



la configuración de servidor, es un Windows 2003 SP2, con Apache 2.0.59 y PHP 5.2.3 y evidentemente las funciones LDAP activadas.

Gracias de ante mano

josepzin


SlowDawn

Up!

Estoy exactamente con el mismo problema que "alberizo"

Windows 2003 SP2, PHP 5.2.3 (con funciones LDAP), aunque mi servidor Web es IIS en vez de Apache.

Mi código PHP es similar, así como el error: PHP Warning: ldap_search() [function.ldap-search]: Search: Operations error in...

¿Alguien ha conseguido alguna solución? :S

Saludos!

SlowDawn

Bueno, me respondo a mi mismo... buscando y probando millones de cosas al final he encontrado un código de ejemplo, que aunque es prácticamente igual al que estaba usando, añade ciertos campos a la búsqueda y esta vez la búsqueda se ha realizado correctamente, así que deduzco que el error era un problema de sintaxis.

El ejemplo que probé está en: http://www.mail-archive.com/php-windows-digest@lists.php.net/msg00666.html

Y quedaría algo así

<?php
     $ldaprdn 
'usuario@empresa.dominio';
     
$ldappass 'contraseña';
     
$ds 'empresa.dominio';
     
$dn 'dc=empresa,dc=dominio';
     
$puertoldap 389;
     
$ldapconn ldap_connect&#40;$ds,$puertoldap&#41;
     
or die&#40;"ERROR&#58; No se pudo conectar con el Servidor LDAP."&#41;;

     
if &#40;$ldapconn&#41;
     
&#123;
       
ldap_set_option&#40;$ldapconn, LDAP_OPT_PROTOCOL_VERSION,3&#41;;
       
ldap_set_option&#40;$ldapconn, LDAP_OPT_REFERRALS,0&#41;;
       
$ldapbind ldap_bind&#40;$ldapconn, $ldaprdn, $ldappass&#41;;
       
if &#40;$ldapbind&#41;
       
&#123;
         
echo "LDAP bind realizado correctamente...";

         
$filter "&#40;cn=*&#41;";
         
$fields = array&#40;"sn", "mail"&#41;;
         
$sr ldap_search&#40;$ldapconn, $dn, $filter, $fields&#41;;
         
$info ldap_get_entries&#40;$ldapconn, $sr&#41;;

         
echo&#40;"<br><br>Obtenidas ".$info["count"&#93;."entradas. <br><br>"&#41;;
 
         
for &#40;$i=0; $i<$info["count"&#93;; $i++&#41;
         
&#123;     
           
if&#40;!empty&#40;$info[$i&#93;["sn"&#93;[0&#93;&#41;&#41; echo "<br><br> Apellido&#58; " . $info[$i&#93;["sn"&#93;[0&#93;;     
           
if &#40;!empty&#40;$info[$i&#93;["mail"&#93;[0&#93;&#41;&#41; echo "<br> mail&#58; " . $info[$i&#93;["mail"&#93;[0&#93;;
         
&#125;
       
&#125;
       
else
       &
#123;
         
echo "Error en LDAP bind...";
       &
#125;
     
&#125;
     
ldap_close&#40;$ldapconn&#41;;
 
?>

Alexpi

Cita de: "SlowDawn"Up!

Estoy exactamente con el mismo problema que "alberizo"

Windows 2003 SP2, PHP 5.2.3 (con funciones LDAP), aunque mi servidor Web es IIS en vez de Apache.

Mi código PHP es similar, así como el error: PHP Warning: ldap_search() [function.ldap-search]: Search: Operations error in...

¿Alguien ha conseguido alguna solución? :S

Saludos!

no tiene anda que ver pero me ha reusltado raro.

IIS soprota php? yo pensaba que apache era para php y IIS para ASP o_O
Juego web www.goldpiece.net

davidgf

Sí IIS tiene soporte para php. De hecho apache tenia un módulo de soporte para ASP pero era no oficial (algo asi como chilisoft o chiliasp)

El tipo de server no tiene nada que ver con el scripting que permita
Tàrraco: una aventura por la Tarragona romana (http://tarraco.davidgf.net)

arosales

:lol:  Saludos a los muchachos del foro, espero que ya se puedan conectar con exito al ldap desde php, de hecho recuerden que deben hacer:
$ldapconn = ldap_connect($ds,$puertoldap);
if ($ldapconn)
{
   ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3);
   ldap_set_option($ldapconn, LDAP_OPT_REFERRALS,0);
   $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
   if ($ldapbind)
   {
          $filter="(|(mail=*usuario*))";
       $fields = array("ou","sn", "mail","givenname","cn","department","enployeetype");
       $sr = ldap_search($ldapconn, $dn, $filter, $fields);
       $info = ldap_get_entries($ldapconn, $sr);
       for ($i=0; $i<$info["count"]; $i++)
       {
              // hacer las impresiones con echo(""); etc
       }
   }
}

Todo eso esta bien, pero el problema que tengo es que necesito saber cuando abro un browser cual es el usuario conectado? el usuario activo? para luego mostrar las opciones del menu y asi unificar las contraseñas?

Alguien me puedo ayudar para identificar el usuario?
FRL






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.