无法联系ldap_bind上的LDAP服务器($ con,$ rdn,$ pwd)

for a while now i'm fiddling around with an LDAP connection to an Active Directory Server for authentication. I tried this the PHP native way and also using Zend Framework. Even though the ldap_connect() works fine, as soon as i bind something, the ldapConnection appears to break down. This is the script i've tried

error_reporting(E_ALL | E_STRICT);
putenv('LDAPTLS_REQCERT=never');

$ldapcon = ldap_connect("FQSN", 636);

ldap_set_option($ldapcon, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapcon, LDAP_OPT_REFERRALS, 0);

$anon = ldap_bind($ldapcon, "CN=WebTestuserAW,OU=Benutzer,OU=DOM,DC=dom,DC=de", "Sommer2012");
//also tried: 
//$anon = ldap_bind($ldapcon, 'WebTestuserAW@dom.de', 'Sommer2012');

echo ldap_error($ldapcon);

Using the above i get Can't contact LDAP server. Doing a var_dump($ldapcon) returns a resource link. When trying to connect using the Zend Framework approach, the error may have some more hints, since some additional connection parameters are given

2012-11-12T14:37:39+01:00 DEBUG (7): Ldap: 1: host=FQHN,port=636,bindRequiresDn=1,baseDn=OU=Benutzer,OU=DOM,DC=dom,DC=de,accountFilterFormat=(sAMAccountName=%s),useSsl=1,useStartTls=,accountDomainName=dom.de,username=CN=WebTestuserAW,password=*****
2012-11-12T14:37:39+01:00 DEBUG (7): Ldap: 2: /var/www/html/login/library/Zend/Ldap.php(850): 0x1: Failed to retrieve DN for account: stosic@dvv.de [0x51 (Can't contact LDAP server): ldaps://FGHN:636]
2012-11-12T14:37:39+01:00 DEBUG (7): Ldap: 3: #0 /var/www/html/login/library/Zend/Auth/Adapter/Ldap.php(316): Zend_Ldap->bind('username@dom.de', '*****')

I seriously just have no clue anymore. I've googled around, played a bit with LDAP-Protocol Versions, played around with the request certificate option, but simply nothing helps. The connection to the server works per se on ldap_connect but as soon as you bind something it doesn't work anymore. This remains true for anonymous binds, too.

At office no one has any clue and neither do i. So if anyone has any suggestions on what i can still try, i'd be very greatful for that! Thanks in advance.

Additional information:

  • Server LDAP Config:
    • LDAP Support enabled
    • RCS Version $Id: ldap.c 299434 2010-05-17 20:09:42Z pajoye $
    • Total Links 0/unlimited
    • API Version 3001
    • Vendor Name OpenLDAP
    • Vendor Version 20343
    • SASL Support Enabled
  • Both ldap:// and ldaps:// has been tested
  • ldap_connect() returns a resource link
  • ldap_bind() doesn't work, ldap_errno() returns -1 (Can't connect to LDAP Server)
  • LDAPTLS_REQCERT and TLS_REQCERT
dongmo9996
dongmo9996 好的捕获,听起来也很奇怪...
7 年多之前 回复
douzhi1937
douzhi1937 那么ldap.conf文件可能在其他地方(比如/etc/openldap/ldap.conf),如果没有,我会感到惊讶。如果它确实缺失,你总是可以创建它。您可以让系统管理员尝试此处概述的步骤,以确保Web服务器可以连接到AD。可能是一个SElinux问题也会想到它。祝好运!
7 年多之前 回复
douxing1353
douxing1353 这是一个Linux,是的,但系统管理员告诉我没有ldap.conf。我也设置了TLS_REQCERT=从不通过putenv()。没有改变什么。我目前的假设是,尽管他们打电话,服务器之间的连接没有正确设置。将塔卡用几天的时间来解决这个问题...非常感谢你的帮助,我仍然非常感激!
7 年多之前 回复
dpv21589
dpv21589 我的意思是在客户端-脚本运行的框上。从您发布的日志中,它看起来像一个LinuxWeb服务器-应该有一个名为/etc/ldap.conf的文件。在那里,你需要设置“TLS_REQCERTnever”。
7 年多之前 回复
douyulv6921
douyulv6921 “没有ldap.conf”-©server-guys:)你能更确切地知道你需要什么吗?
7 年多之前 回复
douyu9433
douyu9433 你也可以发布/etc/ldap.conf文件的内容吗?
7 年多之前 回复
doujiang2020
doujiang2020 Urg,我以前有过这个但不是多年。不是真正的答案,但IIRC我认为我有一个问题,因为ldap模块本身不工作(即没有正确构建)。如果可能的话,可能值得在另一个平台上快速尝试。
7 年多之前 回复

1个回答



默认情况下,AD中未启用ldaps。 您是否尝试通过端口389连接? 您是否可以使用某些LDAP工具(例如 Apache Directory Studio )连接到它?</ p>

这是我的猜测,为什么它不起作用......但也尝试使用DC的FQDN,或者甚至是IP。</ p>
</ div>

展开原文

原文

By default, ldaps is not enabled in AD. Did you try connecting over port 389? Are you able to connect to it using some LDAP tool (like Apache Directory Studio)?

That's my guess as to why it's not working... but try using the FQDN of the DC too, or maybe even an IP.

douju3911
douju3911 我已将ldap php配置添加到我的帖子中。 OpenLdap Vend版本是20xxx,所以我想这匹配你之前关于ldap_connect()实际上没有发生的连接的评论,回到服务器人员:)非常感谢!
7 年多之前 回复
douxiong2999
douxiong2999 Grr,由于某种原因,SO没有通知我新的评论。 再次感谢您的提示,我肯定会检查这个。 另外,关于仅在绑定上发生的ldap连接的评论也非常有用! 我会检查一下。
7 年多之前 回复
dongzai3917
dongzai3917 我在你的代码中看到了LDAPTLS_REQCERT,但是你可能仍然需要在你的ldap.conf文件中设置TLS_REQCERT - 这样做了吗? (尝试之后重新启动apache)我仍然认为你实际上没有连接,因为在你绑定之前连接不会发生 - 你总是得到一个带有ldap_connect()的资源(参见us.php的“返回值”部分。 净/手动/ EN / function.ldap-connect.php)
7 年多之前 回复
dsebywql016137
dsebywql016137 感谢提示,这也是在我的PHP文件的顶部完成的,因为这也是对edirectory进行身份验证的错误。 现在的错误只是:一旦我绑定了什么,我就没有联系。 链接本身的建立工作。 绑定没有
7 年多之前 回复
duannao3819
duannao3819 假设你在Linux机器上,我似乎记得需要在/etc/ldap.conf中设置“TLS_REQCERT never” - 可能至少指向正确的方向:en.gentoo-wiki.com/wiki / ...
7 年多之前 回复
douya1855
douya1855 正如我之前的评论中提到的,端口389也不起作用,错误保持不变。 然而,我从你的评论中读到的是,这很可能是AD本身的配置问题。 然后要与那些管理员进行双重检查。 谢谢到目前为止!
7 年多之前 回复
doulao7572
doulao7572 除非您对AD基础结构进行了大量修改(这对于正常的AD操作不是必需的,因此很可能没有发生),因此在端口636上连接不太可能有效。 所以对我来说有意义的是端口636上的绑定不起作用。 AD不太可能在端口636上侦听。我同意您应该尝试连接端口389。
7 年多之前 回复
duanpang5583
duanpang5583 没有ldapS的连接导致绑定时出现相同的错误。 完整的RDN实际上是在Softerra LDAP浏览器之外进行的,因此应该可以正常工作,但明天在工作中我也会尝试在DC上使用FQDN。 真的很难调试我,它是一个Dev-Web服务器,所有Serverguys可以告诉我“从A到B的连接正在工作”:S
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问