【发布时间】:2013-10-03 18:23:57
【问题描述】:
如果这个问题没有被问过一百万次,我会感到惊讶,但我还没有找到解决方案。
我正在使用 PHP“ldap_search”列出 Active Directory 用户,并希望使用以下方法显示某些“操作属性”,例如用户创建日期 (createTimeStamp):
$filter = "CN=*";
$result = ldap_search($ldap, $ldap_dn, $filter) or exit("Unable to search LDAP server");
这可行,我得到了一个用户列表,但是 createTimeStamp 没有返回。我读过这是因为它被归类为“操作属性”,不属于正常结果集。显然,只有在特别请求时才会返回这些属性。所以我然后尝试了这个:
$filter = "CN=*";
$attr = array("samaccountname","createTimeStamp");
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");
这仍然没有返回 createTimeStamp 的值。所以我的问题是:是否有可能以某种方式将 Active Directory 配置为不返回这些值,如果是,是否可以更改?
EDIT:如果有帮助,我们可以检索 Large Integer/Interval 格式但不是 createTimeStamp 的 lastLogon > 采用 UTC 编码时间 格式;我不确定这有多相关,因为我们遇到的问题是根本没有返回数据。
EDIT 2:我已使用 LDIFDE (http://support.microsoft.com/kb/237677) 使用此行搜索 Active Directory:
ldifde -f ldaptest.txt -s myServer -d "DC=domain,DC=com" -p subtree -r "(sAMAccountName=*BWayne*)" -l "createTimeStamp"
...它返回这个:
dn: CN=Wayne Bruce,OU=Section....
changetype: add
createTimeStamp: 20100406101951.0Z
所以如果是访问问题,那么它似乎只会影响 PHP 脚本。
【问题讨论】:
标签: php active-directory ldap