我正在尝试使用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!";}
}
当我将用户名留空时,我收到了祝贺信息,但在使用用户名时,我收到了错误消息。请协助
答案 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有更多疑问,请随时与我联系。