You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP对接Active Directory LDAPS绑定返回Invalid Credential问题咨询

问题解答

实现思路正确性判断

你提出的实现思路是正确的,属于Active Directory对接的标准流程:

  • 先使用拥有查询权限的管理员凭据完成LDAPS绑定
  • 再用用户提交的账号在AD中搜索到对应用户的完整可分辨名称(DN)
  • 最后使用搜索到的用户DN和用户提交的密码做绑定校验,即可完成用户身份验证
    相比你直接拼接用户DN的写法,这种先搜索再校验的方式兼容性更强,不会因为用户所属OU变化导致校验失败。

绑定失败的排错步骤

你现在不管用普通用户还是管理员都绑定失败,主要有以下几个常见原因,按优先级排查:

  1. 管理员绑定DN填写错误
    你测试用的管理员DN只写了CN=sysadmin,属于不完整的可分辨名称,必须补全全路径,和你普通用户的DN规则一致,比如sysadmin如果放在默认Users容器下,完整DN应该是类似CN=sysadmin,CN=Users,DC=ultimate,DC=local,你可以在AD服务器上查看sysadmin账号的属性获取完整DN。

  2. 错误被抑制无法排查根因
    你代码里用了@符抑制了ldap_bind的所有报错,无法看到真实错误原因,先删除@,并在else分支加入错误打印代码,就能拿到具体报错信息:

else
{
    echo "绑定失败,错误原因:" . ldap_error($ldap_con);
}
  1. LDAPS证书校验失败
    PHP默认会校验LDAPS服务端的SSL证书,如果你的AD用的是自签名证书,或者PHP服务器没有信任AD的根证书,也会导致绑定失败。可以先添加配置跳过证书校验做测试(生产环境请把AD根证书导入PHP的信任证书库,不要长期跳过校验):
$ldap_con = ldap_connect("ldaps://192.168.124.40:636");
ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);
// 新增以下两行跳过证书校验
ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap_con, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER);
  1. 语法错误
    你第二段测试代码里的echo "King"后面缺少分号,会导致PHP语法报错,先补上分号再测试。

内容的提问来源于stack exchange,提问作者Etzi138

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:45:07