一段时间以来,我正在摆弄与 Active Directory 服务器的 LDAP 连接以进行身份验证。我尝试了这种 PHP 原生方式,也使用了 Zend 框架。即使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, 'WebTestuserAW@dom.de', 'Sommer2012');
echo ldap_error($ldapcon);
使用上面我得到Can't contact LDAP server。执行 avar_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: 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', '*****')
我真的不知道了。我用谷歌搜索了一下,使用了 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