试图获取用户数据时,对LDAP坏搜索过滤器(Bad search filter on LDAP wh

2019-09-20 02:06发布

我刚从这里与LDAP的开箱,所以让我知道如果我在完全错误的方式这样做。

我与Symfony的1.4工作使用bhLDAPAuthPlugin插件

我验证用户登录使用LDAP。 然而,在这我想使用的用户名查询LDAP表更多的数据。 所以,我写这个搜索功能,根据用户名过滤结果:

function user_values($username) {
if (!$username) {
    die ("Username is not there man!");
}

if (!$this->_conn) {
    die ("No Connection.");
}
if (!$this->_base_dn) {
    die ("No Base.");
}
$filter="samaccountname=".$username;

$attributes_ad = array("name");
$result = ldap_search($this->_conn, $this->_base_dn, $filter, $attributes_ad) 
or die ("Error in search query");
$entries = ldap_get_entries($this->_conn, $result);
    return($entries);
}

我得到的错误:

警告:ldap_search()搜索:中/坏搜索过滤器...在搜索查询错误

当我运行查询。

第一个三个“如果”是那里只是为了确保我正在搜索的正确的参数。 条件为实际的搜索失败。

有什么建议么?

UPDATE

用户名变量jtesting

我从功能上拉$的用户名,它被放在搜索参数之前。 它实际上是(jtesting)。 我要去掉括号,并看看是否能补救的问题。

Answer 1:

为了在过滤器中的断言值用括号中的parenthese必须转义。 的搜索过滤器,其中所述断言值samAccountName=(jtesting)应当被编码为samAccountName=\28jtesting\29 。 整个断言值可以被封闭在未转义的括号,在这种情况下,过滤器变成(samAccountName=\28jtesting\29)

更多信息

  • LDAP:搜索过滤器
  • 搜索过滤器的字符串表示


文章来源: Bad search filter on LDAP when trying to get user data