首页 > 解决方案 > 登录 PHP 到 Active Directory 失败

问题描述

我正在尝试通过简单的 PHP 代码验证用户的身份验证,但我总是收到相同的错误“无效凭据”。

$ldap_dn = "uid=".$_POST["username"].",DC=xxx,DC=xxx,DC=xxx,DC=xxx,DC=xxx";
$ldap_password = $_POST["password"];

$ldap_con =   ldap_connect("xxx", 389);
ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION,3);

//check connection
if ($ldap_con === FALSE) {
    die("<p> Couldn't connect to LDAP service </p>");
    } else {
        echo "<p> connessione avvenuta con successo </p>";
}

// check authentication
if(@ldap_bind($ldap_con, $ldap_dn, $ldap_password)){
    echo "Autenticato";
}else{
    echo "Autenticazione Fallita <br>";
    echo ldap_error($ldap_con);
}

PHP 代码在已登录公司域的 PC W7pro 上的 XAMP 上运行。

我从执行测试的同一台机器上获得了 AD 地址;对于检索 DN,我使用了“Softerra LDAP 浏览器”程序,但实际上我不确定这个参数。

当用户登录到域时,用户名使用姓氏的三个字母后跟两个名字,例如 Name = Alfred / Surname = Pecora username = pecal。

标签: phpactive-directoryldap

解决方案


您的代码中的 $ldap_dn 是否与 AD 中的 DN 正确匹配?如果您是 AD 的管理员,您可以通过在 AD 的 DOS 提示符下执行 dsquery 命令来确认。

例如,

dsquery user -name pecal

或者您可以使用 <name>@<domain> 格式而不是 DN 格式:

$ldap_dn = $_POST["username"]."@example.com";

推荐阅读