ActiveLdap で特定の属性値を持つユーザーを検索しようとしていますが、奇妙なクエリがサーバーに送信されています。私はそれを次のように設定しました:
class Ldapuser < ActiveLdap::Base
ldap_mapping :dn_attribute => 'uid',
:prefix => 'ou=People',
:classes => ['top', 'inetOrgPerson']
end
そして、特定の専攻の学生を見つけようとします。
Ldapuser.all(
:attribute => 'studentMajor', :value => 'CHEM',
:attribute => 'primaryAffiliation', :value => 'student',
:attribute => 'organizationalStatus', :value => 'active').each {|user|
# process the user...
}
これを実行すると、ユーザーを処理する内部ブロックに到達することはなく、プログラムを強制終了する必要があります。Tcpdump は、実行された 3 つの検索を示しています。
- searchRequest(1) "" baseObject - 結果は 0 でした。
- searchRequest(2) "cn=schema" baseObject - 115 件の結果が得られました。
- searchRequest(3) "ou=people,dc=myedu,dc=edu" wholeSubtree - 時間がかかりすぎるので中断します。
私の予想では、単一のクエリを実行して、約 20 件の結果がすぐに得られると思います。これは、コマンド ラインから ldapsearch を使用した場合に得られるものです。
ldapsearch -x '(&(studentMajor=CHEM)(primaryAffiliation=student)
(organizationalStatus=active))'