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

如何用PHP LDAP扩展获取AD非默认属性lockedOut?

能否通过PHP LDAP扩展获取AD中默认不返回的属性?

首先澄清:你提到的LockedOut并非AD的“特性”,它是PowerShell AD模块对LDAP原生属性lockoutTime的友好别名,本质属于AD的LDAP属性,完全可以通过PHP LDAP扩展获取,问题出在你用错了属性名。

问题根源

PowerShell里的LockedOut是简化后的名称,对应的AD LDAP原生属性是lockoutTime——这才是你需要在PHP中指定的属性名。AD默认不会返回这个属性,所以必须在搜索时显式声明。

修正后的PHP代码示例

// 确保连接时设置LDAP协议版本3(AD推荐配置)
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);

// 搜索时指定正确的属性名lockoutTime
$result = ldap_search($conn, $dn, "cn=foo", ["lockoutTime"]);
if ($result === false) {
    // 错误处理逻辑
}
$count = ldap_count_entries($conn, $result);
if ($count !== 1) {
    // 错误处理逻辑
}
$entry = ldap_first_entry($conn, $result);

// 现在能正常获取到lockoutTime属性
$attr = ldap_get_attributes($conn, $entry);
// 解析锁定状态:lockoutTime值为0表示未锁定,非0表示已锁定
$isLockedOut = isset($attr['lockoutTime'][0]) && $attr['lockoutTime'][0] != 0;

// 也可以用ldap_get_values直接获取属性值
$lockoutValues = ldap_get_values($conn, $entry, "lockoutTime");
if ($lockoutValues !== false) {
    $isLockedOut = $lockoutValues[0] != 0;
}

额外注意事项

  • 确保你的LDAP绑定账号拥有读取AD用户lockoutTime属性的权限,否则会返回空值或错误。
  • 若仍有问题,可临时在搜索时指定*获取所有属性(仅用于调试,生产环境不推荐),验证lockoutTime是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:45:32