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

问题描述 投票:0回答:2

有一段时间我正在摆弄与 Active Directory 服务器的 LDAP 连接以进行身份验证。我尝试了 PHP 本机方式并使用 Zend Framework。尽管

ldap_connect()
工作正常,但一旦我绑定某些东西,ldapConnection 就会崩溃。这是我尝试过的脚本

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, '[email protected]', 'Sommer2012');

echo ldap_error($ldapcon);

使用上面的内容,我得到无法联系 LDAP 服务器。执行

var_dump($ldapcon)
返回资源链接。当尝试使用 Zend Framework 方法进行连接时,错误可能会有更多提示,因为给出了一些额外的连接参数

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: [email protected] [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('[email protected]', '*****')

我真的不知道了。我用谷歌搜索了一下,玩了一下 LDAP 协议版本,玩了一下请求证书选项,但根本没有任何帮助。与服务器的连接本身可以在

ldap_connect
上工作,但一旦绑定某些内容,它就不再工作了。对于匿名绑定来说也是如此。

在办公室,没有人有任何线索,我也没有。因此,如果有人对我仍然可以尝试的内容有任何建议,我将非常感激!预先感谢。

附加信息:

  • 服务器 LDAP 配置:
    • LDAP 支持已启用
    • RCS 版本 $Id:ldap.c 299434 2010-05-17 20:09:42Z pajoye $
    • 总链接0/无限制
    • API 版本 3001
    • 供应商名称 OpenLDAP
    • 供应商版本 20343
    • SASL 支持已启用
  • ldap:// 和 ldaps:// 都经过测试
  • ldap_connect() 返回资源链接
  • ldap_bind() 不起作用,ldap_errno() 返回 -1(无法连接到 LDAP 服务器)
  • LDAPTLS_REQCERT 和 TLS_REQCERT
php zend-framework active-directory ldap
2个回答
2
投票

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

这是我对它不起作用的猜测...但也尝试使用 DC 的 FQDN,甚至可能是 IP。


0
投票

我今天也犯了同样的错误,然后我改变了

ldap_connect($host, $port)

致:

$uri = "ldap://localhost:389";
ldap_connect($uri)...

ldap_bind(...)
通话有效

© www.soinside.com 2019 - 2024. All rights reserved.