我正在编写LDAP查询以返回eDirectory服务器上具有UID的每个帐户。然后将这些帐户缓存到散列映射中以供稍后使用。我正在使用的过滤器是(&(UID = *))但我得到以下异常:
Caught: LDAPSearchException(resultCode=53 (unwilling to perform), numEntries=0, numReferences=0, errorMessage='unwilling to perform', responseControls={SimplePagedResultsControl(pageSize=0, isCritical=false)})
LDAPSearchException(resultCode=53 (unwilling to perform), numEntries=0, numReferences=0, errorMessage='unwilling to perform', responseControls={SimplePagedResultsControl(pageSize=0, isCritical=false)})
at com.unboundid.ldap.sdk.LDAPConnection.search(LDAPConnection.java:3059)
at com.unboundid.ldap.sdk.LDAPInterface$search.call(Unknown Source)
如果我将过滤器更改为更具体的类似(&(UID = a *)),则此查询代码可以正常工作,但它似乎在任何时候都会失败,这将是一个返回大量行的查询。我仔细检查了Apache Directory Studio中的每个查询,他们都在那里工作没有问题。
eDirectory查询是否存在某种限制?如果是这样,我该怎么做才能绕过这个限制并将每个帐户的属性缓存到一个hashmap中?我有代码工作,对所有以a,b,c等开头的UID运行多个查询,但是我担心我可能不会以这种方式获得每个帐户。
答案 0 :(得分:0)
在评论中,您建议ROOT是基本DN。您确定基本DN是否正确?
如果您在eDirectory服务器上启用了跟踪(带有+ LDAP标志的DStrace)并尝试此查询,您会看到什么?可能你会得到一个更有帮助的错误。正如Jeemster在评论中指出的那样,查询本身很好,而你可能会遇到不同的错误。