【问题标题】:php ldap operational attributesphp ldap 操作属性
【发布时间】: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 格式但不是 createTimeStamplastLogon > 采用 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


    【解决方案1】:

    条目和属性可以通过访问控制来保护。使用已知良好的工具尝试检索createTimestamp 以确定访问控制是否到位。在已知具有createTimestamp 属性的条目和您的测试条目上尝试此操作:

    ldapsearch -h hostname -p port -D bindDN -w bindPassword \
        -b baseObject -s base '(&)' createTimestamp
    

    确保在每种情况下都使用相同的 DN 来验证测试。

    【讨论】:

    • 感谢您的回复。我不得不承认我对 LDAP 有点陌生,而且我不熟悉 ldapsearch - 我使用的是 Windows Server 2000 R2,似乎没有任何这样的命令行功能。我在有问题的服务器上运行了实用程序 ldp.exe (support.microsoft.com/kb/224543),它返回了所需的操作属性。
    • 我已使用 LDIFDE (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 脚本
    • 当您使用 LDIFDE 进行测试时,您是否使用与您的 PHP 脚本相同的 DN 来验证连接?
    • 不,好点!我刚刚再次运行它,将-b username domain password 添加到命令末尾并得到相同的结果(成功)。
    • 更正,我在 LDIFDE 中使用“用户名”,而在 PHP 中使用“username@domain.com”。我不能在 PHP 中使用“用户名”格式或在 LDIFDE 中使用“username@domain.com”格式而不会出错。
    猜你喜欢
    • 1970-01-01
    • 2019-07-07
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多