[LDAP] Lister membres d'un groupe ainsi que les détails de chaque membre
Hello,
j'utilise le code suivant pour lister les membres d'un groupe en paramètre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, server);
env.put(Context.SECURITY_PROTOCOL, "ssl");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, ldapDN);
env.put(Context.SECURITY_CREDENTIALS, ldapPassword);
String filter = "(&(cn=GROUPE_5))";
DirContext ctx;
DirContext ldapContext;
try {
ldapContext = new InitialDirContext(env);
SearchControls ctls = new SearchControls();
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
ctls.setReturningAttributes(new String[] { "uniquemember"});
NamingEnumeration<SearchResult> resultEnum = ldapContext.search("ou=groups,dc=toto", filter , ctls);
while (resultEnum.hasMoreElements()) {
SearchResult result = resultEnum.next();
Attributes attrs = result.getAttributes();
for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements();) {
Attribute attr = (Attribute) ae.next();
String attrId = attr.getID();
for (NamingEnumeration vals = attr.getAll(); vals.hasMore();) {
String thing = vals.next().toString();
System.out.println(attrId + ": " + thing);
}
System.out.println("--------");
}
}
ldapContext.close();
} catch (NamingException e) {
System.out.println(e);
} |
Ce qui me retourne ceci :
Code:
1 2
| uniqueMember: uid=C45804,ou=People,dc=toto
uniqueMember: uid=J85405,ou=People,dc=toto |
Ce que je souhaite faire maintenant, c'est pour chaque uniqueMember, récupérer ses infos ( cn, mail, nom, prenom .... ).
Après quelques recherches, j'ai l'impression que je vais devoir extraire l'uid de mes String, puis faire un lookup sur cet uid et boucler sur les attributes ?
Y'a pas un moyen plus "propre" ?
Cdlt.