LDAP搜索过滤器字符串如何接受空间?

时间:2014-01-12 07:41:08

标签: java ldap

我感到有些紧张,因为这是我在Stack Overflow的第一个问题。如果我没有以良好的方式做到这一点,请告诉我。

在LDAP中,我认为以下搜索过滤字符串可以正常工作。

( & (uid=tt4cs) (objectClass=inetOrgPerson) )

这意味着搜索条目,其中一个uidtt4cs,其中一个objectClassinetOrgPerson

请注意,每个括号和&符之间都有空格,只会被忽略。但是,就我读到RFC4515而言,我找不到任何允许任何空间的含义。任何人都可以告诉我其他标准是否允许这样做,或者按照惯例这样做是什么?


更新于2014年1月13日

我已经用三种方式对它进行了测试。 (我的环境中的LDAP服务器是OpenLDAP 2.4.38)

(1)在命令行上执行ldapsearch。上面的搜索过滤器可以运行并获得结果。

(2)使用UnboundID LDAP SDK for Java进行搜索。此API不会将搜索请求发送到服务器,但会抛出一个异常,指出“在过滤器字符串的第15位发现了意外的右括号。”

String filter = "( & (uid=tt4cs) (objectClass=inetOrgPerson) )";
SearchResult searchResult
    = connection.search("dc=localdomain", SearchScope.SUB, filter);

(3)使用Apache Directory LDAP API进行搜索。此API不会将搜索请求发送到服务器,但会抛出一个异常,指出“过滤器(&(uid = tt4cs)(objectClass = inetOrgPerson))无效。”

String filter = "( & (uid=tt4cs) (objectClass=inetOrgPerson) )";
EntryCursor cursor
    = connection.search("dc=localdomain", filter, SearchScope.SUBTREE);

现在我觉得接受额外的空格可能是依赖于实现的行为,并且最好避免它。

0 个答案:

没有答案