IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Authentification LDAP en JSP


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Par défaut Authentification LDAP en JSP
    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

  2. #2
    Membre expérimenté
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Par défaut
    pour faire simple, tu peux passer la session en parametre de ta methode et stocker le cn dans la session en cas de succes

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Par défaut
    oki

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    Bonjour,

    Je vais aussi faire des accès LDAP via java, alors je nage un peu.

    Le code proposé audessus, et plus précisément
    LDAPConnection lc = new LDAPConnection();
    c'est relatif à l'api novell non ?
    Car avec les api java basique (naming, etc...) j'ai utilisé des choses comme
    DirContext ctx = new InitialDirContext(env);
    Juste pour comprendre
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [W1][N1][M1][D1] Echec de l'authentification LDAP
    Par linux dans le forum Contribuez
    Réponses: 8
    Dernier message: 13/07/2006, 16h46
  2. [Sécurité] Authentification LDAP
    Par Original Prankster dans le forum Langage
    Réponses: 7
    Dernier message: 18/05/2006, 09h39
  3. Réponses: 3
    Dernier message: 14/03/2006, 11h38
  4. [VB.Net]Comment effectuer l'Authentification LDAP ?
    Par le Daoud dans le forum VB.NET
    Réponses: 6
    Dernier message: 28/02/2006, 10h09
  5. Authentification ldap pour apache sous Windows
    Par beastman007 dans le forum Apache
    Réponses: 3
    Dernier message: 13/07/2005, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo