LDAP无法从搜索中查找对象

时间:2011-05-14 13:16:56

标签: java ldap

首先,我是LDAP新手并使用LDAP进行编码。我有一个简单的问题,我试图在LDAP中调试。我花了最近24小时查看我的代码并搜索示例和配置。我有一个在JBoss上运行的Web应用程序。我创建了一个外部Context bean,因此我可以在JNDI树中为我的LDAP服务器查找连接。我没有问题就得到了联系。当我在LDAP服务器中搜索UID时,我收到了NameNotFoundException。来自LDAP的异常消息说:LDAP:错误代码32 - 无此对象。这让我看看我的搜索条件。

这就是我所拥有的:

我正在使用LDAP浏览器连接到LDAP服务器。我正在使用LDAP浏览器中的搜索工具来验证我的搜索条件。

SearchControls ctls = new SearchControls();
ctls. setReturningObjFlag (true);
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(&(objectClass=*))";

InitialContext initCtx = new InitialContext();
LdapContext ldapCtx = (LdapContext) initCtx.lookup("ldapDataSource");

NamingEnumeration answer3 = ldapCtx.search("ou=People, ou=externalusers,    
                                            ou=EpicentricJNDIContext, 
                                            o=company.com", filter, ctls);

为了确保,我还将对象类更改为person。我仍然没有得到结果。

我觉得我的代码是正确的。我现在想知道用户是否具有完成搜索的正确权限。另外,我如何知道LDAP结构是否正确设置,以便应用程序可以搜索LDAP?我相信我们正在使用Netscape Directory Server

我在这里遗漏了什么?似乎问题就在我面前,我没有看到它。任何建议或意见将不胜感激。

由于

我已经解决了我的问题。问题是我如何绑定到LDAP服务器以及我是如何创建DN的。

SearchControls ctls = new SearchControls(); ctls. setReturningObjFlag (true);     
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); String filter = "(&    (objectClass=inetOrgPerson))";  
InitialContext initCtx = new InitialContext(); 
LdapContext ldapCtx = (LdapContext) 
initCtx.lookup("ldapDataSource");  
NamingEnumeration answer3 = ldapCtx.search("ou=People, ou=externalusers,ou=EpicentricJNDIContext",filter,ctls); 

1 个答案:

答案 0 :(得分:0)

你不需要&在过滤器中,除非你有多个条件要和 - 一起。

这不是您的搜索条件。未找到的名称是search()的第一个参数,它是唯一的名称。检查一下。

你知道这个搜索会在修复之后返回名称下的整个子树吗?