java - significa - Encuentra BASE DN del objeto de contexto del directorio LDAP
que significa cn en active directory (2)
Tengo contexto de directorio para LDAP, pero necesito averiguar el DN BASE de ese objeto de contexto de directorio. Tengo el siguiente código para obtener el objeto de contexto de directorio,
// Configure our directory context environment.
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://test.mycomp.com:389");
env.put(Context.SECURITY_AUTHENTICATION, "Simple");
env.put(Context.SECURITY_PRINCIPAL,"uid=test.gen,OU=Generics,O=test.mycomp.com");
env.put(Context.SECURITY_CREDENTIALS, "test123");
DirContext dirContext = new InitialDirContext(env);
System.out.println("loaded dirContext");
Tengo el siguiente código para obtener el DN base, he estado devolviendo el nombre DN base pero quiero optimizar mi filtro en lugar de poner 2 bucles para obtener DN base.
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.OBJECT_SCOPE);
NamingEnumeration results = dirContext.search("",
"(&(objectClass=organization)(objectClass=top))", constraints);
// Fail if no entries found
if (results == null || !results.hasMore()) {
System.out.println("No result found");
return;
}
while(results.hasMoreElements()){
Object res = results.next();
SearchResult serResult = (SearchResult) res;
Attributes atts = serResult.getAttributes();
System.out.println(atts.toString());
Attribute baseAttr = atts.get("namingContexts");
NamingEnumeration ids = baseAttr.getAll();
while(ids.hasMoreElements()){
Object obj = ids.next();
System.out.println(obj.toString());
}
}
Por favor, ayúdenme a optimizar mi filtro.
No necesitas la búsqueda. Simplemente obtenga el atributo namingContexts del InitialContext.
Los servidores de directorios que cumplen con LDAP deben proporcionar información sobre los namingContexts
cuando se consulta el DSE raíz. Para obtener más información acerca de la raíz DSE, consulte " LDAP: la raíz DSE ". El SDK LDAP de UnboundID proporciona una clase para encapsular el DSE raíz y un método conveniente para recuperarlo.