目前,我可以使用用户名和密码登录。我希望能够使用电子邮件地址而不是用户名登录。你怎么建议我这样做?
剧本:
$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";
}
非常感谢任何帮助。
非常感谢!
答案 0 :(得分:3)
不是电子邮件地址,除非它与userPrincipalName相同。
使用Microsoft Active Directory时,您可以使用userprincipal名称绑定samAccountName(通常需要domain \ samAccountName),当然还有DN。
答案 1 :(得分:1)
您必须与具有LDAP服务器读取权限的用户绑定,使用相关电子邮件地址搜索用户的DN,然后使用该DN执行第二次绑定。如果第二个绑定成功,则用户登录,如果第二个绑定失败,则登录失败。
创建了一个显示该过程的要点