首先,我是LDAP新手,使用LDAP进行编码。我有一个简单的问题,我试图在LDAP中进行调试。我花了最后24小时看着我的代码并搜索示例和配置。我有一个在JBoss上运行的Web应用程序。我创建了一个外部的Context bean,这样我就可以在我的LDAP服务器的JNDI树中查找连接。我正在建立一个没有问题的连接。当我在LDAP服务器中搜索UID时,出现NameNotFoundException。来自LDAP的异常消息说:LDAP:错误代码32 - 没有这样的对象。这让我看看我的搜索条件。LDAP未从搜索中找到对象
以下是我有:
我使用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);
我也已将对象类更改为人,只是为了确保。我仍然没有得到结果。
我觉得我的代码是正确的。我现在想知道用户是否有正确的权限来完成搜索。另外,如何知道LDAP结构已正确设置,以便应用程序可以搜索LDAP?这是我的信仰,我们正在使用Netscape目录服务器
我在这里丢失什么?看起来问题在我面前,我看不到它。任何建议或意见将不胜感激。
谢谢
我已经解决了我的问题。问题在于我如何绑定到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);
不要在java中这样做,但你确定“o = company.com”是不是“o = company,o = com”? – JPBlanc 2011-05-14 16:55:49
或o = company,dc = com? – EJP 2011-05-15 22:55:13