问题描述
我正在使用 LDAP 和 Java 搜索.这是我的 LDIF 导出的简单组织
I am playing with LDAP and Java search. Here's my LDIF export with a simple organization
version: 1 dn: dc=example,dc=com objectClass: organization objectClass: dcObject objectClass: top dc: example o: MyOrganization description: Test Description dn: ou=people, dc=example,dc=com objectClass: organizationalUnit objectClass: top ou: people description: All users in demo company dn: cn=Johnny Doe,ou=people,dc=example,dc=com objectClass: organizationalPerson objectClass: person objectClass: inetOrgPerson objectClass: top cn: Johnny Doe sn: Johnny homephone: 123-456-7890 mail: johnny@johnny.com ou: Development uid: jjohnny userpassword:: johnny dn: cn=Samuel Johnson,ou=people,dc=example,dc=com objectClass: organizationalPerson objectClass: person objectClass: inetOrgPerson objectClass: top cn: Samuel Johnson sn: Samuel homephone: 123-456-7890 mail: sam@ssam.com ou: Accounts uid: ssam userpassword:: sammy
如何运行 Java 片段以从 LDAP 服务器获取所有用户?我的 Apache DS 目录服务器上没有身份验证设置.
How do I run a Java snippet to get all users from the LDAP server? There's no authentication set-up on my Apache DS Directory Server.
Hashtable env = new Hashtable(11); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://localhost:10389/dc=example,dc=com"); env.put(Context.SECURITY_AUTHENTICATION, "none"); try { // Create initial context DirContext ctx = new InitialDirContext(env); Object obj = new Object(); // want to print all users from the LDAP server System.out.println(obj.toString()); ctx.close(); }
推荐答案
try { LdapContext ctx = new InitialLdapContext(env, null); ctx.setRequestControls(null); NamingEnumeration<?> namingEnum = ctx.search("ou=people,dc=example,dc=com", "(objectclass=user)", getSimpleSearchControls()); while (namingEnum.hasMore ()) { SearchResult result = (SearchResult) namingEnum.next (); Attributes attrs = result.getAttributes (); System.out.println(attrs.get("cn")); } namingEnum.close(); } catch (Exception e) { e.printStackTrace(); } private SearchControls getSimpleSearchControls() { SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); searchControls.setTimeLimit(30000); //String[] attrIDs = {"objectGUID"}; //searchControls.setReturningAttributes(attrIDs); return searchControls; }