2011-03-15 15 views

Respuesta

7

Connect abre la sesión. Bind es lo que realmente te autentica. Por lo tanto, se conectó pero no inició sesión con credenciales válidas.

función
+3

Esta respuesta no es correcta. Puedo obtener la advertencia de PHP: ldap_bind(): no se puede vincular al servidor: no puedo contactar al servidor LDAP en ... en un servidor, mientras que puedo usar las mismas credenciales para obtener 'true' como resultado del enlace en mi máquina local. – kush

+0

El método 'ldap_connect' no conecta o abre una sesión al servidor. From the docs ** Nota: Esta función no abre una conexión.Comprueba si los parámetros dados son plausibles y se pueden usar para abrir una conexión tan pronto como sea necesario. **. El acto de hacer un 'ldap_bind' iniciará la conexión, también lo hará un' ldap_start_tls'. – ChadSikorra

-2

la ldap_bind() pide a tres parámetros:

  1. un identificador de recurso
  2. un RDN
  3. una contraseña asociada con el RDN el RDN y la contraseña son opcionales

si se vincula con solo el ID de recurso: -

// $ldap=ladap_connect(*hostname*,*port*); 
// ldap_connect() returns a resource id 
ldap_bind() returns a boolean value(true or false) 
ldap_bind($ladp); //annonymous bind  
$lb=ldap_bind($ldap,"uid=xxx,ou=something,o=hostname.com","password"); //used to authenticate 

esto debería funcionar si no estás utilizando credenciales no válidas.

+1

Mejore el formato de su respuesta, especialmente la lista de uso y el formato del código; consulte [ayuda de edición] (http://stackoverflow.com/editing-help). –

+0

@ObenSonne Por favor, mejore la ortografía de su comentario, o la respuesta en sí. –

+0

@CeesTimmerman Gracias por señalar eso. Es posible que desee prestar atención a http://stackoverflow.com/review/ –

2

No estoy teniendo una experiencia que coincida con lo que estoy leyendo aquí. Probé

$ds=ldap_connect("goblydeegook",336); 
if($ds) echo "successful"; 

y yo estoy recibiendo la respuesta de "éxito"

+1

La sección Valores devueltos de la [documentación de php.net para ldap_connect()] (http://us3.php.net/manual/en/ function.ldap-connect.php) explica por qué $ ds es verdadero. Aquí está la parte relevante: 'Cuando se utiliza OpenLDAP 2.x.x, ldap_connect() siempre devolverá un recurso ya que en realidad no se conecta, sino que simplemente inicializa los parámetros de conexión. La conexión real ocurre con las próximas llamadas a ldap_ * funcs, generalmente con ldap_bind(). ' – rynemccall

3

tenido este error en RHEL7 (CentOS7) debido a SELinux puertos restringen HTTPD puede utilizar.

puertos LDAP 389 y 636 no están en la lista predeterminada de permitir, se puede desbloquear con:

setsebool -P httpd_can_network_connect 1 

Puede comprobar la restricción al tratar de una toma al servidor LDAP:

fsockopen('LDAP-Server-IP', 389); 

Dará 'Permiso denegado' mostrando que está bloqueado y no es un problema de credenciales.

También verifique su archivo de registro de auditoría SELinux para ver otras cosas que están siendo bloqueadas.

0

En algún momento el problema dependerá de su entorno (Linux, Windows ...) intenta enlazar con una de estas opciones:

$connect = ldap_connect("ldap://".$ldap_server); 
$auth_user = 'CN=XXX,OU=XXX,DC=XXX,DC=com'; 
$bind = ldap_bind($connect, $auth_user , $auth_pass); 

o

$bind = ldap_bind($connect, 'YourDomaine\\'.$auth_user , $auth_pass); 
Cuestiones relacionadas