¿Hay alguna manera de obtener los nombres de todos los grupos en Active Directory usando java?LDAP: ¿Cómo obtener todos los grupos en Active Directory?
Respuesta
Use Java JNDI, y realice una búsqueda de (objectclass = group) y solicite el atributo cn. Esto obtendrá el nombre de todos los grupos.
ejemplo Código:
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class Test {
public static String ldapUri = "ldap://localhost";
public static String usersContainer = "cn=users,dc=example,dc=com";
public static void main(String args[]) {
if (args.length != 2) {
System.out.println("Usage: test userName password");
return;
}
String username = args[0];
String password = args[1];
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUri);
env.put(Context.SECURITY_PRINCIPAL, username);
env.put(Context.SECURITY_CREDENTIALS, password);
try {
DirContext ctx = new InitialDirContext(env);
SearchControls ctls = new SearchControls();
String[] attrIDs = { "cn" };
ctls.setReturningAttributes(attrIDs);
ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE);
NamingEnumeration answer = ctx.search(usersContainer, "(objectclass=group)", ctls);
while (answer.hasMore()) {
SearchResult rslt = (SearchResult) answer.next();
Attributes attrs = rslt.getAttributes();
System.out.println(attrs.get("cn"));
}
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Gracias por la respuesta. Cuando intento usar esto, aparece el siguiente error: "javax.naming.NamingException: [LDAP: código de error 1 - 00000000: LdapErr: DSID-0C090627, comentario: para realizar esta operación, se debe completar un enlace correcto en la conexión ., data 0, vece "¿Alguna idea? – user709389
Parece que no se ha autenticado correctamente. ¿Te estás conectando al servidor LDAP correcto? ¿Su usuario fdn es correcto (como cn = Administrador, cn = usuarios, dc = ejemplo, dc = com) y su contraseña es correcta? – kalyan
Sí, mi pw estaba equivocado (soy estúpido). De todos modos, ahora tengo siguiente: "javax.naming.AuthenticationException: [LDAP: código de error 49 - 80090308: LdapErr: DSID-0C090334, comentario: error AcceptSecurityContext, datos 525, vece" – user709389
Puede utilizar esta biblioteca. Es fácil de usar y potente
utilicé el ejemplo de Kalyan para consultar los grupos de usuarios, pero se encontró que a pesar de la consulta trabajó, no devolvió todos los grupos de usuarios. Después de algunas excavaciones, me di cuenta del Catálogo Global de AD y basado en this example, pude modificar la respuesta de Kalyan para devolver todos los grupos de usuarios del catálogo global.
Los cambios requeridos fueron:
- Agregado puerto mundial
3268
al conjunto del primer parámetro ldapUri a
Context.search
a""
.public static void main(String args[]) { String ldapUri = "ldap://ad.domain.com"; if (args.length != 2) { System.out.println("Usage: test userName password"); return; } String username = args[0]; String password = args[1]; Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, ldapUri + ":3268"); env.put(Context.SECURITY_PRINCIPAL, username); env.put(Context.SECURITY_CREDENTIALS, password); try { DirContext context = new InitialDirContext(env); SearchControls searchControls = new SearchControls(); String[] attrIDs = {"cn"}; searchControls.setReturningAttributes(attrIDs); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); NamingEnumeration answer = context.search("", "(objectclass=group)", searchControls); while (answer.hasMore()) { SearchResult rslt = (SearchResult) answer.next(); Attributes attrs = rslt.getAttributes(); System.out.println(attrs.get("cn")); } context.close(); } catch (NamingException e) { e.printStackTrace(); } }
- 1. Listar todos los grupos de Active Directory
- 2. Grupos anidados de Active Directory
- 3. Obteniendo grupos de usuarios en Active Directory
- 4. ldap nodejs active directory authentication
- 5. Ruta de LDAP Active Directory
- 6. ASP.NET Cómo obtener la lista de grupos en Active Directory
- 7. TSQL: ¿Cómo obtener una lista de grupos que pertenece a un usuario en Active Directory
- 8. ¿Cómo valido los créditos de Active Directory sobre LDAP + SSL?
- 9. javascript active directory usuario/grupos consulta
- 10. ADAM, Active Directory, LDAP, ADFS, Identity
- 11. lograr que los grupos de Active Directory mediante C#
- 12. ¿Cómo obtener los grupos de un usuario en Active Directory? (C#, asp.net)
- 13. Obtener una lista de grupos de miembros (memberOf) en Active Directory
- 14. C# Active Directory: ¿Obtener el nombre de dominio del usuario?
- 15. Encontrar CN de usuarios en Active Directory
- 16. ¿Qué permisos son necesarios para leer Active Directory como LDAP?
- 17. Cómo recuperar todos los grupos desde LDAP con Perl
- 18. Gerrit y Active Directory
- 19. Active Directory vs OpenLDAP
- 20. Autenticar a Active Directory con python-ldap siempre devuelve (97, [])
- 21. Consulta LDAP de Active Directory por sAMAccountName y dominio
- 22. Active Directory (LDAP) - Comprobar la cuenta bloqueada/contraseña expiró
- 23. Cómo obtener la lista de todos los dominios en Active Directory usando C#
- 24. Windows Active Directory Emulator
- 25. Cómo conectarme con Java en Active Directory
- 26. Autenticación LDAP de Django a través de Active Directory 2008
- 27. ¿Cuáles son las diferencias entre LDAP y Active Directory?
- 28. ¿Cómo rellenar las autorizaciones de LDAP del LDAP de Active Directory utilizando la seguridad de Spring?
- 29. ¿Cómo restrinjo a teamcity.users a los miembros de un grupo de Active Directory (LDAP)?
- 30. Active Directory Lista de OU
¿Está usando la primavera LDAP? – lobster1234