php - 登录 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。
解决方案
您的代码中的 $ldap_dn 是否与 AD 中的 DN 正确匹配?如果您是 AD 的管理员,您可以通过在 AD 的 DOS 提示符下执行 dsquery 命令来确认。
例如,
dsquery user -name pecal
或者您可以使用 <name>@<domain> 格式而不是 DN 格式:
$ldap_dn = $_POST["username"]."@example.com";
推荐阅读
- python - 使用 Python 从音频文件中提取 F0、抖动和闪光
- symfony - 解析 YAML 时出错,文件无效“C:\wamp64\www\swapp/translations\date.it.yml”
- java - 测试抛出 NullPointerException 而不是 RandomCustomException,但仅在某些环境中
- c# - 从 C# 中的配置文件读取保持顺序的键值对
- php - PHP 在新标签页中打开链接
- scala - 我们有两个列表需要使用 spark scala 过滤第二个列表与第一个列表比较
- python-3.4 - Py2exe - PyOpenSSL 错误:超出最大递归深度
- regex - vim中可以使用递归正则化吗?
- c++ - 解析时 std::wistringstream 可以忽略字符串中的空格吗?
- c# - 无法建立连接,因为目标机器主动拒绝它 129.172.174.102:50491