Bonjour,
Je sollicite votre aide pour un problème que je n'ai pas encore résolu.
Ce problème concerne la recherche d'un identifiant et mot de passe dans un annuaire OpenLDAP pour vérifier s'il existe ou pas, s'il est juste ou pas.
Voici mon code :
Et voici le message d'erreur qu'il me sort :
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
50
51
52
53
54
55
56
57
58
59 public class CheckUser { public static void main(String[] args) { Hashtable env = new Hashtable(); String url = "ldap://localhost:389"; String modeAuthentification = "simple"; String user = "cn=admin,dc=my_domain,dc=com"; String mdp = "admin"; String lieuRecherche = "dc=my_domain,dc=com"; String qui = "Pierre"; String filtre = "(|(cn="+qui+")(sn="+qui+"))"; String userpswd = "pierrep"; String filtre2 = "userPassword ="+userpswd+""; String filtre3 = "(&(cn="+qui+")(userPassword ="+userpswd+"))"; env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, url); env.put(Context.SECURITY_AUTHENTICATION, modeAuthentification); env.put(Context.SECURITY_PRINCIPAL, user); env.put(Context.SECURITY_CREDENTIALS, mdp); DirContext dirContext; try { dirContext = new InitialDirContext(env); SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); NamingEnumeration resultat = dirContext.search("dc=my_domain,dc=com", "(&(cn="+qui+")(userPassword ="+userpswd+"))", searchControls); // l'erreur semble se situer ici while (resultat.hasMore()) { SearchResult sr = (SearchResult)resultat.next(); if (resultat != null) { System.out.println("True"); } else { System.out.println("le login et/ou ce mot de passe n'existe pas dans l'annuaire"); } } } catch (NamingException e) { System.err.println("Erreur lors de l'acces au serveur LDAP" + e); e.printStackTrace(); } System.out.println("fin des traitements"); }
Cependant je ne pense pas que ce soit une erreur de connexion à mon annuaire OpenLDAP car j'ai utilisé ce même code de connexion pour d'autre 'module', et cela ceux-ci fonctionnent bien...Erreur lors de l'acces au serveur LDAPjavax.naming.directory.InvalidSearchFilterException: invalid attribute description; remaining name 'dc=my_domain,dc=com'
javax.naming.directory.InvalidSearchFilterException: invalid attribute description; remaining name 'dc=my_domain,dc=com'
at com.sun.jndi.ldap.Filter.encodeSimpleFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilterList(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeComplexFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilterString(Unknown Source)
at com.sun.jndi.ldap.LdapClient.search(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.doSearch(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.searchAux(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.c_search(Unknown Source)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
at javax.naming.directory.InitialDirContext.search(Unknown Source)
at CheckUser.main(CheckUser.java:52)
fin des traitements
Mon erreur ce situe surtout au niveau de "LDAPjavax.naming.directory.InvalidSearchFilterException: invalid attribute description;" mais je ne sais pas à quoi cela correspond...
Auriez-vous une idée, s'il vous plaît ?
En vous remerciant.
Partager