Java应用程序中的LDAP搜索

Java应用程序中的LDAP搜索,java,apache,authentication,ldap,apacheds,Java,Apache,Authentication,Ldap,Apacheds,我正在我的应用程序中使用这个。 我在本地主机上安装了ApacheDS,它工作正常 在我的应用程序中,我已成功连接到LDAP服务器: conn.connect("localhost", 10389); conn.bind(LDAPConnection.LDAP_V3, "uid=admin,ou=system","secret".getBytes("UTF8")); 然后我尝试在LDAP目录中搜索一些数据: attrList = new String[]{"dn", "cn", "m

我正在我的应用程序中使用这个。 我在本地主机上安装了ApacheDS,它工作正常

在我的应用程序中,我已成功连接到LDAP服务器:

  conn.connect("localhost", 10389);
  conn.bind(LDAPConnection.LDAP_V3, "uid=admin,ou=system","secret".getBytes("UTF8"));
然后我尝试在LDAP目录中搜索一些数据:

  attrList = new String[]{"dn", "cn", "mail"};
  sFilter = "(mail=admin@test.com)";

  LDAPSearchConstraints cons = new LDAPSearchConstraints();
  cons.setDereference(LDAPSearchConstraints.DEREF_ALWAYS);
  LDAPSearchResults searchResults = conn.search("uid=admin,ou=system", LDAPConnection.SCOPE_SUB, sFilter, attrList, false,cons);
搜索结果中没有结果。你能帮我吗? 但当我在ApacheDS Studio中使用相同的参数进行用户搜索时,我可以看到一些结果。 请检查这个

我使用的代码如下:

Attributes matchAttrs = new BasicAttributes(true);
matchAttrs.put(new BasiAttribute("mail", "admin@test.com"));
NamingEnumeration<SearchResult> answer = ctx.search(context, matchAttrs);
Attributes matchAttrs=新的基本属性(true);
matchAttrs.put(新的基本属性(“邮件”)admin@test.com"));
namingumeration-answer=ctx.search(上下文,匹配属性);

其中
ctx
的类型为
InitialDirContext
,而
context
是搜索根(一个上下文)。

在屏幕截图中,筛选器与请求的属性列表不同。这是故意的吗?这只是我愚蠢的错误。屏幕截图现已修复。具有
mail
属性的对象是否从属于
uid=admin,ou=system
?当基础对象设置为该值时,LDAP目录服务器将只考虑基类对象或低于对象的对象作为返回到搜索结果中的LDAP客户端。谢谢,但我正在使用LDAP实现LDAP。问题的根源-目录LDAP配置不正确