Bonjour,

Je veux faire une authentification ldap.
Voici ma class me permettant de savoir si la personne peut s'authentifier ou pas :
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package cra;
 
import com.novell.ldap.*;
import java.*;
 
public class ldap {
 
    public ldap() {}
 
    /**
   * Method verifyIdUser : authentifier un utilisateur depuis un annuaire LDAP
   * @param login String : le login de l'utilisateur
   * @param pwdClair String : le mot de passe de l'utilisateur
   * @return boolean : true si l'utilisateur existe, false sinon
   */
  public static boolean verifyIdUser(String login, String pwdClair) {
 
    //Déclaration des variables
 
    //Booléen qui sera retourné par la fonction
    boolean exist = false; 
 
    //Port d'accesion à LDAP
    int ldapPort = LDAPConnection.DEFAULT_PORT;
 
    //Méthode de recherche dans l'annuaire (SUB = descend dans tous les sous-arbres
    //du contexte donné (BaseDN)
    int searchScope = LDAPConnection.SCOPE_SUB;
 
    //Protocole de connection
    int ldapVersion = LDAPConnection.LDAP_V3;
 
    //false pour récupérer noms ET valeurs des attributs en résultat de recherche
    boolean attributeOnly = false;
 
    //Nom des attributs à retrouver (ici : tous)
    String attrs[] = {LDAPConnection.ALL_USER_ATTRS};
 
    //Paramètres d'accession à LDAP (Serveur, BindDN et son mot de passe, contexte
    //à partir duquel la rechecherche se fait, et la requête LDAP (filtre))
    String ldapHost = "10.20.0.69";
    String loginDN = login;
    String password = pwdClair;
    String searchBase = "OU=DEA,O=CG93";
    String searchFilter = "uid=" + loginDN;
 
    //Nouvel objet de type LDAPConnection
    LDAPConnection lc = new LDAPConnection();
 
    try {
      // connexion au serveur
      lc.connect(ldapHost, ldapPort);
 
      // Identification de l'administrateur
      lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
 
      //Recherche à effectuer
      LDAPSearchResults searchResults =
          lc.search(searchBase, // container to search
 
                    searchScope, // search scope
 
                    searchFilter, // search filter
 
                    attrs, // Attributes
 
                    attributeOnly); // all attributes are returned
 
      //*****************************
      // *Traitement des résultats*
     //*****************************
      //Nouvel attribut uid de valeur login
      LDAPAttribute attrLog = new LDAPAttribute( "uid", login );
 
      //Booléen pour le résultat de la comparaison des attributs
      boolean compareResults = false;
 
      //Pour chaque résultat trouvé
      while ( searchResults.hasMore()) {
 
        //Variable de type donnée de LDAP
        LDAPEntry nextEntry = null;
        try {
          //Donner la valeur du résultat à la variable nextEntry
          nextEntry = searchResults.next();
        }
        catch(LDAPException e) {
          System.out.println("Error: " + e.toString());
          continue;
        }
 
        // Si l'uid de l'entrée a la même valeur que le login 
        if ( compareResults = lc.compare(nextEntry.getDN(), attrLog)) {
            exist = true;
        }
      }
      //Se déconnecter de l'annuaire
      lc.disconnect();
    }
    //Gestion des erreurs
    catch( LDAPException e ) {
      System.out.println( "Error: " + e.toString() );
    }
    catch( Exception e ) {
      System.out.println( "Error: " + e.toString() );
    }
 
    //Retourner le résultat
    return exist;
  }
 
}
Et voici comment je l'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<%
String nom = request.getParameter("userid");
String pwd = request.getParameter("userpwd");
 
if ((test.verifyIdUser(nom, pwd)) == true){
    response.sendRedirect("successLogin.jsp");
}else{
    response.sendRedirect("failedLogin.jsp");
}
 
%>
Merci