2013-06-12 35 views
0

我想檢查給定的DN是否存在於LDAP目錄中,使用Perl和Net::LDAP。所以,我想我會做這樣的事情:如何使用Net :: LDAP執行按DN搜索

my $dn = 'uid=foo,ou=bar,ou=baz'; 
$ldap->search(base => $dn, scope => 'base', attrs => ['dn']); 

然而,這導致Bad filter錯誤。我可以通過添加filter => '(objectClass=*)'來實現它,但這看起來有點難以理解。

這是我應該怎麼做的,或者我錯過了什麼?我是Net :: LDAP的新手。

+0

爲什麼這個「kludgey」? LDAP客戶端必須爲搜索請求提供有效的過濾器。 –

+0

@TerryGardner我想這就是說它應該是這樣的。但是,例如,使用OpenLDAP'ldapsearch'命令行工具,您不必指定過濾器(它爲您默認)。它似乎像錯誤信息會說,如果過濾器是必需的。 – derobert

+0

當您的代碼中沒有提供過濾器時,在搜索請求中實際發送到服務器的過濾器是什麼? –

回答

2

LDAP客戶端必須爲搜索請求提供有效的搜索過濾器。嘗試使用(&)作爲過濾器。請注意,某些損壞的目錄服務器不接受合法過濾器(&)。如果您的服務器以這種方式損壞,請使用目前的過濾器(objectClass=*)代替。