2011-03-15 210 views

回答

7

连接打开会话。绑定是实际验证你的东西。因此,您已连接但未使用有效凭证登录。

+3

这个答案不正确。我能够获得PHP警告:ldap_bind():无法绑定到服务器:无法在...在一台服务器上联系LDAP服务器,而我能够使用相同的凭据来获得'true'作为绑定的结果在我的本地机器上。 – kush 2016-08-09 19:30:08

+0

'ldap_connect'方法不连接或打开服务器的会话。从文档**注意:此功能不会打开连接。它检查给定的参数是否合理,并且可以在需要时立即打开连接。**。执行'ldap_bind'将启动连接,'ldap_start_tls'也将启动。 – ChadSikorra 2017-02-09 15:20:46

-2

中的ldap_bind()函数询问了三个参数:

  1. 资源ID
  2. 一个RDN
  3. 与RDN的RDN及密码关联的密码是可选的

如果仅使用资源ID绑定: -

// $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 

这应该工作,如果不是那么你使用无效的凭据。

+1

请改善您的答案的格式,特别是使用列表和代码格式 - 请参阅[编辑帮助](http://stackoverflow.com/editing-help)。 – 2011-06-24 07:46:02

+0

@ObenSonne请改善您的评论或答案本身的拼写。 – 2013-11-26 09:16:08

+0

@CeesTimmerman谢谢你指出。您可能想要注意http://stackoverflow.com/review/ – 2013-11-29 21:08:55

2

我没有与我在这里阅读的内容相匹配的经验。我试图

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

,我获得“成功”的响应

+1

[ldap_connect()]的php.net文档的返回值部分(http://us3.php.net/manual/en/) function.ldap-connect.php)解释了为什么$ ds是真实的。以下是相关部分:'当使用OpenLDAP 2.x.x时,ldap_connect()将始终返回资源,因为它实际上并未连接,只是初始化连接参数。实际连接发生在下一次调用ldap_ * funcs时,通常使用ldap_bind()。' – rynemccall 2013-03-21 19:35:32

3

对RHEL7(CentOS7)这个错误是由于SELinux的限制端口HTTPD可以使用。

LDAP端口389和636是不是默认允许列表中,您可以允许与:

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

setsebool -P httpd_can_network_connect 1 

你可以尝试一种插座LDAP服务器测试的限制

它会给'权限被拒绝'显示它被阻止,而不是凭证问题。

同时检查您的SELinux审计日志文件是否被其他东西阻塞。

0

有时这个问题将取决于你的环境(Linux操作系统,视窗...)的 尝试使用这个选项之一绑定:

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

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