Partage
  • Partager sur Facebook
  • Partager sur Twitter

[NodeJS][ActiveDirectory] InvalidCredentialsError

Sujet résolu
    9 juillet 2019 à 11:25:33

    Bonjour,

    Je suis en train de développer une application pour une entreprise qui doit être relié à leur annuaire Active Directory.

    J'ai donc installer le package npm activedirectory : https://www.npmjs.com/package/activedirectory

    J'ai rédigé une fonction qui permet (en théorie) de s'authentifier : 

    async function connectUser(login,password) {
        try {
            const config = {
                url: 'ldap://mydomain.com',
                baseDN: 'dc=myDC,dc=myDC,dc=com',
                username: login + '@mydomain.com'
            }
            var ad = new ActiveDirectory(config);
            ad.authenticate(login,password,(err,auth)=>{
                if (err) {
                    console.error(err);
                }
                if (auth) {
                    console.log('Authenticated');
                } else {
                    console.log('Authentication failed');
                }
            })
        } catch (err) {
            console.error(err);
        }
    }

    Lorsque j'exécute cette fonction, j'ai cette erreur en sortie : "InvalidCredentialsError: 80090308: LdapErr: DSID-0C090400, comment: AcceptSecurityContext error, data 52e, v1db1"

    Après quelques recherche j'ai vu que data52e signifiait que le login était correct mais le mot de passe incorrect.

    Or je viens de tester sur ma machine avec le même domaine et j'arrive parfaitement à m'authentifier. 

    Je poste donc ce message afin de savoir si quelqu'un connaissant bien l'Active Directory avec NodeJS pourrait me donner des pistes pour me sortir de mon problème.

    Merci de m'avoir lu, bonne journée à tous.

    EDIT :

    Ok j'avais pas remarqué sur le coup, mais j'ai un caractère spécial dans mon mot de passe... ça doit doit sûrement jouer...

    EDIT 2

    Ok c'est bon j'ai trouvé la solution, sujet résolu

    -
    Edité par hippomssc 9 juillet 2019 à 12:41:49

    • Partager sur Facebook
    • Partager sur Twitter
      12 septembre 2019 à 16:30:29

      Est il possible de savoir quel était le problème et la solution ?!

      Je suis confronté à ce problème également. J'arrive à m'authentifier avec un compte faisant partie d'un groupe "user" mais impossible de s'authentifier avec un compte du groupe "admin".

      • Partager sur Facebook
      • Partager sur Twitter
        14 septembre 2019 à 19:55:20

        Salut !

        J'avoue que je ne me souviens plus exactement de la solution... Peux-tu me donner le bout de code de ta fonction que j'essaye de voir si je peux t'aider ?

        Bonne soirée!

        -
        Edité par hippomssc 14 septembre 2019 à 19:55:42

        • Partager sur Facebook
        • Partager sur Twitter
          16 septembre 2019 à 10:15:02

          const config = {
            url: 'ldap://mydomain.com',
            baseDN: 'dc=myDC,dc=myDC2',
            username: 'admin@mydomain.com'
          };
          const ad = new ActiveDirectory(config);
          
          router.post('/connect', (req, res) => {
            const username = req.body.Username;
            const password = req.body.Password;
            if (username == null) {
              console.error('Erreur dans le body:', req.body);
              res.redirect('/login');
              return;
            }
            ad.authenticate(username, password, (errAD, auth) => {
              if (errAD) {
                console.log('Authentication failed!', errAD);
                res.redirect('/login');
                return;
              }
          
              if (auth) {
                console.log('Authenticated!', auth);
                ad.getUsersForGroup(groupUser, (err, users) => {
                  if (err) {
                    console.log(`ERROR: ${JSON.stringify(err)}`);
                    return;
                  }
          
                  if (!users) console.log(`Group: ${groupUser} not found.`);
                  else {
                    users.forEach((elem) => {
                      if (elem.sAMAccountName === username) {
                        req.user = elem;
                        req.session.user = elem;
                        res.locals.user = elem;
                      }
                    });
                  }
                });
              }
            });
          });
          Au niveau d'active directory, les deux groupes ont les mêmes accès. Le fait de répartir les membres entre ces deux groupes me permet de définir simplement si l'utilisateur est admin ou non. Même si l'utilisateur fait partie des deux groupes, l'authentification répond "false" avec une erreur datae52 (sans faute dans le mot de passe) à partir du moment où l'utilisateur est référencé dans le groupe admin.
          • Partager sur Facebook
          • Partager sur Twitter
            30 septembre 2019 à 16:46:48

            J'ai résolu mon problème.

            Je ne saurais pas expliquer pourquoi il y avait ce problème:

            J'avais deux comptes de test qui ont été créés uniquement pour le développement d'un outil interne. Un des deux comptes était référencé dans un groupe User et l'autre dans le groupe Admin.

            Le compte User arrivait toujours à se connecter, en utilisant le login (sAMAccountName et le mot de passe).

            Le compte Admin lui n'arrivait pas à s'authentifier et tous les autres utilisateurs (qui faisaient également partie d'autres groupes).

            J'ai résolu le problème en utilisant pour chaque authentification le "userPrincipalName" de l'utilisateur essayant de se connecter (en utilisant findUser pour récupérer les informations de son compte LDAP).

            Le compte qui arrivait à se connecter n'avait pas besoin d'utiliser le "userPrincipalName".


            Le lien qui m'a aidé, bien que l'exemple dans la documentation précise un username avec @domain (https://github.com/gheeres/node-activedirectory/issues/101).

            -
            Edité par VDKY 30 septembre 2019 à 16:48:47

            • Partager sur Facebook
            • Partager sur Twitter
              18 mars 2020 à 11:19:24

              Bonjour,

              je me permets de poster un commentaire sur le mur car je souhaite implémenter une connexion par LDAP en NodeJS mais j'ai une erreur qui s'affiche au moment de la connexion dans mon terminal:

              ERROR: {"lde_message":"80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580\u0000","lde_dn":null}

              J'utilise pourtant le module "active-directory" 

              Je ne comprends pas car dans l'objet config je renseigne les informations concertant l'accès au LDAP et dans la méthode ad.authenticate je passe en parametre username, password (que je recupere depuis req.body) et la fonction de callback.

              Une idée?

              Merci

              • Partager sur Facebook
              • Partager sur Twitter
                18 mars 2020 à 12:07:02

                Salut, 

                https://community.boomi.com/s/article/ldapconfigurationacceptsecuritycontexterrordata52e l'erreur 52e signifie que tes identifiants ne sont pas corrects...

                Je peux jeter un coup d'oeil à ta config? J'ai plus mon code sous la main et ça commence un peu à dater mais si je me souviens bien il faut aussi renseigner un mot de passe dans la config comme dans l'exemple de la docs NPM : 

                var ActiveDirectory = require('activedirectory');
                var config = { url: 'ldap://dc.domain.com',
                               baseDN: 'dc=domain,dc=com',
                               username: 'username@domain.com',
                               password: 'password' }
                var ad = new ActiveDirectory(config);
                
                var username = 'john.smith@domain.com';
                var password = 'password';
                 
                ad.authenticate(username, password, function(err, auth) {
                  if (err) {
                    console.log('ERROR: '+JSON.stringify(err));
                    return;
                  }
                  
                  if (auth) {
                    console.log('Authenticated!');
                  }
                  else {
                    console.log('Authentication failed!');
                  }
                });


                Vérifie que tu l'a bien renseigné.

                https://www.npmjs.com/package/activedirectory

                -
                Edité par hippomssc 18 mars 2020 à 12:08:14

                • Partager sur Facebook
                • Partager sur Twitter

                [NodeJS][ActiveDirectory] InvalidCredentialsError

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown