0

これが何百万回も尋ねられていないのに、私はまだ解決策を見つけていないとしたら、私は驚くでしょう.

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形式のlastLogonを取得できますが、UTC Coded Time形式のcreateTimeStampは取得できません。私たちが抱えている問題は、データがまったく返されないことであるため、これがどの程度関連しているかはわかりません。


編集 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 スクリプトにのみ影響しているようです。

4

1 に答える 1

0

エントリと属性は、アクセス制御によって保護できます。既知の適切なツールを使用して取得を試みcreateTimestamp、アクセス制御が実施されているかどうかを判断します。createTimestamp属性を持つことがわかっているエントリとテストエントリでこれを試してください:

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

いずれの場合も、必ず同じ DN を使用してテストを認証してください。

于 2013-10-02T18:16:47.880 に答える