我正在尝试使用PHP来验证使用LDAP在我们的Active Directory中进行身份验证。
我知道有效的用户名和密码,我们的域名和LDAP服务器。
$ldapconn = ldap_connect($ldapserver)
有效,它返回'ldap link'资源。
但是当我打电话给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 :(得分:2)
调试这类东西真的很棘手。如果您有权访问,请使用LDAP服务器上的日志,或尝试使用http://jxplorer.org/之类的内容来获取有关您尝试连接的用户的实际dn /上下文的更多信息。你可能有一部分缺失或不太正确。
此外,如果您的用户名/密码包含需要在命令行中转义的字符,请确保您没有在PHP脚本中转义它们。