2013-02-25 56 views
2

我正在尝试使用PHP来验证我们的Active Directory中使用LDAP的身份验证。ldap_bind()不起作用

我知道一个有效的用户名和密码,我们的域和LDAP服务器。

$ldapconn = ldap_connect($ldapserver)工作,它返回'ldap链接'资源。

但是当我拨打ldap_bind($ldapconn, $ldaprdn, $password)它失败。

我已经尝试了很多$ldaprdn的设置,但找不到有效的设置。一些例子:

$ldaprdn = $username;

$ldaprdn = $username.'@'.$domain;

$ldaprdn = $domain.'\\'.$username;

$ldaprdn = "uid=$username,cn=users,dc=$ldapserver,dc=$domain,dc=com"

$ldaprdn = "uid=$username,dc=$domain,dc=com"

$ldaprdn = "uid=$username,dc=com"

$ldaprdn = "uid=$username,dc=$domain"

没有什么效果,ldap_error($ldapconn)总是返回“无效凭证”。

登录名和密码显然是正确的,我可以在Windows上登录。任何想法我可以使用?

+0

我们的AD域名就像“mydomain.intranet”,它应该是像dc = intranet而不是dc = com的东西吗?或dc = mydomain,dc =内部网?我明天会尝试这些 – Hikari 2013-02-25 20:46:50

回答

2

调试这种事情真的很棘手。如果有权访问,请使用LDAP服务器上的日志,或尝试诸如http://jxplorer.org/之类的内容以获取有关您尝试连接的用户的实际dn /上下文的更好信息。你可能有一部分缺失或不完全正确。另外,如果您的用户名/密码的字符需要在命令行中转义,请确保您没有在PHP脚本中转义它们。

+0

感谢您的回复。他们不需要转义它的字母数字,我打印'$ ldaprdn',这是预期的。我看到一些例子,它真的是username @ domain,我开始认为它与apache/php模块有关。 – Hikari 2013-02-25 16:14:29