verificar una siguiente servidor saber replicar replicacion replica puede problemas poner pagina hacer funcionando funcional establecer esta error dominio debido controlador contacto con como avanzada active abrir active-directory ldap

active directory - una - Usando javax.naming, ¿puedo determinar si estoy conectado a AD o a algún otro tipo de servidor?



replicar active directory windows server 2012 (1)

El DSE raíz puede contener atributos que contienen información sobre el software del servidor de directorio. Sin embargo, la DSE raíz y / o los atributos pueden no estar presentes o los atributos pueden no tener el mismo nombre en todas las implementaciones del servidor de directorio. Sin embargo, puede consultar el DSE y ver qué ofrece para el software de directorio que admitirá su aplicación. Aquí hay una búsqueda de LDAP para obtener el DSE raíz:

ldapsearch -h HOST -b " " -s base objectclass=*

Esto supone que el DSE está asociado con una clase de objeto. El vendedor puede tener un método patentado para proporcionar el mismo.

Existe este RFC informativo 3045; habla de almacenar información relacionada con el proveedor en la raíz DSE. Dos atributos que pueden ser rellenados por el software del servidor de directorio son ''nombre de proveedor'' y ''versión de vendedor''. Puede verificar la existencia de estos en la DSE raíz devuelta por los servidores con los que está trabajando.

Aquí hay un crudo código de Java para extraer esos dos atributos de la raíz DSE (usando el proveedor de LDAP, eso es):

import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; public class RootDSE { public static void main(String[] args) throws Exception{ Hashtable<String, String> jndiParms = new Hashtable<String, String>(); jndiParms.put(Context.PROVIDER_URL, "ldap://my.ldap.server:389"); jndiParms.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); DirContext ctx = new InitialDirContext(jndiParms); String searchBase = ""; String searchFilter = "(objectclass=*)"; SearchControls searchCtls = new SearchControls(); searchCtls.setSearchScope(SearchControls.OBJECT_SCOPE); searchCtls.setReturningAttributes(new String[] { "vendorname", "vendorversion" } ); NamingEnumeration<SearchResult> searchResults = ctx.search(searchBase, searchFilter, searchCtls); if (searchResults.hasMore()) { SearchResult searchResult = (SearchResult)searchResults.next(); System.out.println(searchResult.getAttributes()); } else { System.err.println("No results"); } } }

Al usar solo la API javax.naming, ¿hay algún metadato u otro truco que pueda usar para determinar si de hecho estoy conectado a un servidor de Active Directory u otro tipo de servidor de directorio?