ldapsearch -H -x -s base -b cn=subschema objectclasses 转成java代码
以下是将上述命令转换为Java代码的示例:
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class LdapSearchExample {
public static void main(String[] args) {
String ldapUrl = "ldap://ldap.example.com";
String baseDn = "cn=subschema";
String objectClassesAttr = "objectclasses";
Hashtable<String, String> env = new Hashtable<>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, "none");
try {
DirContext ctx = new InitialDirContext(env);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);
String[] returnAttributes = { objectClassesAttr };
searchControls.setReturningAttributes(returnAttributes);
NamingEnumeration<SearchResult> results = ctx.search(baseDn, "(objectclass=*)", searchControls);
if (results.hasMore()) {
SearchResult result = results.next();
Attribute objectClasses = result.getAttributes().get(objectClassesAttr);
if (objectClasses != null) {
NamingEnumeration<?> values = objectClasses.getAll();
while (values.hasMore()) {
System.out.println(values.next());
}
}
}
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
请注意:在此示例中,我们使用 com.sun.jndi.ldap.LdapCtxFactory 作为初始上下文工厂。这是Java默认提供的实现。如果您使用不同的LDAP库,则需要相应地更改上下文工厂类。
原文地址: https://www.cveoy.top/t/topic/bZNo 著作权归作者所有。请勿转载和采集!