0

jquery でオートコンプリート ボックスを作成するために、ldap に存在するすべてのユーザーのリストを取得しようとしています。しかし、私はそれを得ることができません。LDAPサーバーに接続してバインドできるので、試して使用しますldap_list()。何もフィルタリングせずにリスト全体を取得するために、フィルターを空白のままにします。ただしldap_list()、警告 ( Search: Can't contact LDAP server) を設定して を返しますFALSE。これはブール値であり、期待されるものではないため ( )、すべてがうまくいかなくなりWarning: ldap_get_entries() expects parameter 2 to be resource, boolean givenます。これが私のコードのサンプルです:

$identifier = ldap_connect(sfConfig::get('sf_ldap_host'));
if (!ldap_bind($identifier,
    sfConfig::get('sf_ldap_generic_user').sfConfig::get('sf_ldap_usr_domain'),
    sfConfig::get('sf_ldap_generic_password')))
{
    throw new sfException('could not bind to the Active Directory');
}
$list = ldap_list($identifier, sfConfig::get('sf_ldap_dn'), '', array('mail'));
$list_user = ldap_get_entries($identifier, $list);
4

1 に答える 1

0
  1. サーバーに接続する
  2. DIT のすべての部分を検索するのに十分なアクセス権を持つ DN を使用して BIND 要求を送信することにより、承認状態を変更します。
  3. namingContextsBIND が成功した場合は、ルート DSE からすべてのリストを取得します
  4. 各 NamingContext に対して、namingContext のベース オブジェクト、 のスコープ、またはsubのフィルタを使用して検索要求を送信し、必要な属性のリストを明確にします。ユーザーだけの場合は、フィルターを使用します。たとえば、(&)(objectClass=*)(objectClass=<object class in each user object>)(objectClass=person)
  5. サーバーからの応答の各検索結果には、検索パラメーターに一致したオブジェクトが含まれています

BIND によって設定された承認状態は、アクセスを許可し、要求された数のオブジェクトを返すことが許可されている必要があります。サーバーは、クライアントに返されるエントリの数を制限したり、LDAP 操作 (この場合は検索) の評価に費やされる秒数を制限したりすることが許可されています。

適切に構成されたサーバーでは、サーバーに負荷がかかるため、ディレクトリのトロールが許可されない場合があることに注意してください (他のクライアントに影響を与えます)。クライアントがすべてのユーザーをリストする予定であることをディレクトリ サーバー管理者に通知することを検討してください。

于 2013-11-07T23:18:35.540 に答える