在Java中使用LDAP获取用户过滤器可以通过构建LDAP搜索过滤器来实现。以下是一个示例代码来获取用户过滤器:
import javax.naming.directory.BasicAttribute; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; import javax.naming.NamingEnumeration; public class LDAPUserFilterExample { public static void main(String[] args) { try { // 设置LDAP服务器连接信息 String ldapUrl = "ldap://localhost:389"; String baseDN = "dc=example,dc=com"; String searchFilter = "(&(objectClass=user)(sAMAccountName=*))"; // 设置LDAP认证信息 String username = "admin"; String password = "password"; // 连接LDAP服务器 Hashtableenv = new Hashtable (); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, ldapUrl); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "cn=" + username + "," + baseDN); env.put(Context.SECURITY_CREDENTIALS, password); InitialLdapContext context = new InitialLdapContext(env, null); // 设置LDAP搜索控制器 SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); // 执行LDAP搜索 NamingEnumeration results = context.search(baseDN, searchFilter, searchControls); // 输出搜索结果 while (results.hasMore()) { SearchResult result = results.next(); System.out.println("DN: " + result.getName()); System.out.println("Attributes: " + result.getAttributes()); } // 关闭LDAP连接 context.close(); } catch (Exception e) { e.printStackTrace(); } } }
在上面的示例代码中,我们首先设置了LDAP服务器的连接信息和认证信息,然后创建了一个InitialLdapContext
对象来连接LDAP服务器。接着设置了LDAP搜索控制器SearchControls
,并执行LDAP搜索操作。最后,我们遍历搜索结果并输出用户的DN和属性。最后,记得关闭LDAP连接。