Bonjonr ! Mon problème est que je veut récupérer des utilisateur ayant un champs non complété comme par exemple le champ mail.
J'ai cette fonction de recherche dans LDAP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
39
40
41
42
43
44
45
46
47
48
49 /** * Fonction permettant d'effectuer une recherche paramétrée * @param typeCritere : l'attribut sur lequel la recherche va s'effectuer (exemple : "department") * @param valeurCritere : la valeur que ce critère doit avoir pour être valable comme résultat * @param Attributs : les attributs que l'on souhaite avoir avec le resultat (exemple : { "cn","distinguishedName","description" }) * @param OU : la racine à partir de laquelle on veut commencer à chercher les resultats pertinents (exemple : "CN=Valence,DC=postal,DC=local") * @param SCOPE : 0 pour OBJECT_SCOPE, 1 pour ONELEVEL_SCOPE,2 pour SUBTREE_SCOPE * @return une collection comprenant tous les résultats de la recherche efféctuée */ public Collection Rechercher(String typeCritere, String valeurCritere, String[] Attributs, String OU, int SCOPE) { String searchFilter = "(" + typeCritere + "=" + valeurCritere + ")"; // création du filtre de recherche String[] attrIDs = Attributs; // attributs à récupérer Collection Results = new ArrayList() ; int nbResult = 0 ; try { SearchControls ctls = new SearchControls(); // contrôles de recherche ctls.setReturningAttributes(attrIDs); // configuration de la récupération des éléments ctls.setSearchScope(SCOPE); // configuration de la portée NamingEnumeration searchRes = ldapContext.search(OU,searchFilter,ctls); // exécute la recherche while (searchRes.hasMoreElements()) // hasMoreElements ne renvoie jamais d'erreur { SearchResult result = (SearchResult) searchRes.next(); // on recupère l'objet résultat Results.add(result) ; } } catch (InvalidSearchFilterException isfe) { System.out.println("Erreur au niveau du filtre de la recherche..."); return null; } catch (InvalidSearchControlsException isce) { System.out.println("Erreur au niveau du controle de la recherche..."); return null; } catch (NamingException ne) { System.out.println("Erreur au niveau du nom de la recherche..."); return null; } catch (Exception e) { System.out.println("Erreur..."); return null; } return Results; }
Et donc pour ma recherche du champ vide je fait :
ConAD => ma connection à l'AD
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ArrayList listTmp = (ArrayList) ConAD.Rechercher("&(" + champTmp.getCodechamp(),'"")(objectClass=user)',listeAttributs,"DC=postal,DC=local",2);
champTmp.getCodechamp() => le nom du champ vide à rechercher
listeAttributs => le tableau correspondant à la liste des attributs à retourner
2 => le SCOPE de la recherche (ici SUBTREE_SCOPE)
Je suis passé en debuggage avec JBuilder un bon nombre de fois et à chaque fois la fonction a les bons paramètres mais à l'execution c'est comme si il ne trouver aucun enregistrements... (pas d'erreurs retourner non plus)
Je ne comprend donc pas tout à fait d'où vient l'erreur ...
Je vous remercie d'avance de l'aide que vous pourrez m'apporter et je reste à disposition pour de plus ample explications !
Partager