如何在使用PHP的LDAP身份验证中使用电子邮件代替用户名?

目前,我可以使用用户名和密码登录.我希望能够使用电子邮件地址而非用户名登录.您如何建议我这样做?脚本:

$ldap['username'] = "domain\user123";
$ldap['password'] = "password123";
$ldap['host']   = 'site.domain.com';
$ldap['port']   = 389;
$ldap['dn'] = "CN=Users, DC=domain, DC=com";

$ldap['conn'] = ldap_connect( $ldap['host'], $ldap['port'] )
or die("Could not connect to {$ldap['host']}" );

$ldap['bind'] = ldap_bind($ldap['conn'], $ldap['username'], $ldap['password']);

if( !$ldap['bind'] )
{
echo "Failed";
}

else if( $ldap['bind'] )
{
echo "Success";
}

任何帮助将不胜感激.

非常感谢!

解决方法:

您将必须与对LDAP服务器具有读取权限的用户绑定,使用所涉及的电子邮件地址搜索该用户的DN,然后使用该DN进行第二次绑定.如果第二次绑定成功,则用户登录;如果第二次绑定失败,则登录失败.

我创建了一个要点,以https://gist.github.com/heiglandreas/5689592表示该过程

上一篇:如何通过Java更新LDAP时指定哈希算法?


下一篇:Java:寻找一个库来读取LDAP数据