ldap_bind():无法绑定到服务器:无法联系LDAP服务器PHP

时间:2016-01-23 08:51:34

标签: php ldap

我正在尝试使用php ldap使用Windows Active目录验证Ldap。 以下是代码:

$ldaphost = "abc.flyway.org";

$ldapport = 389;

$ds = ldap_connect($ldaphost, $ldapport)

or die("Could not connect to $ldaphost");

if ($ds)
{
    $username = "human";
    $upasswd = "cryoutloud";

    $ldapbind = ldap_bind($ds, $username, $upasswd);

    if ($ldapbind)
    {print "Congratulations! $username is authenticated.";}
    else
    {print "Nice try, Better luck next time!";}
}

当我将用户名留空时,我收到了祝贺信息,但在使用用户名时,我收到了错误消息。请协助

2 个答案:

答案 0 :(得分:0)

$username = "human ";行上,human这个词之后应该有空格吗?看起来像是一个错字。当你把它留空时,它会尝试匿名绑定。尝试删除尾随空格。

答案 1 :(得分:0)

您需要使用所谓的“专有名称”(DN)来绑定到LDAP服务器。如果省略并将“BindDN” - 参数留空,您将获得匿名登录,该登录可能(或可能不),具体取决于您正在与之通信的LDAP服务器。 2013年后的ActiveDirectory f.i.不再允许匿名绑定。

DN看起来有点像uid=<username>,dc=users,o=example,c=com或完全不同,但它绝对不是一个用户名。因此,如果您想通过用户名对用户进行身份验证,则必须使用已知用户(您可以从LDAP-Admin获取)或匿名访问来搜索具有该用户名的用户的DN。

我已经创建了一个要点来说明https://gist.github.com/heiglandreas/5689592 - 如果您对LDAP有更多疑问,请随时与我联系。