L’authentification des utilisateurs LDAP expliquée | Connect2id

L’authentification des utilisateurs LDAP est le processus de validation d’une combinaison de nom d’utilisateur et de mot de passe avec un serveur d’annuaire tel que MS Active Directory, OpenLDAP ouOpenDJ. Les annuaires LDAP sont une technologie standard pour stocker les informations sur les utilisateurs, les groupes et les autorisations et les servir aux applications de l’entreprise.

L’authentification des utilisateurs avec un annuaire LDAP est un processus en deux étapes. Cet articleexplique sa mécanique, puis comment le configurer dansLdapAuth.

Etape 1 – Résolution du nom d’utilisateur en un attribut d’entrée d’annuaire

Les entrées d’utilisateur dans un annuaire sont identifiées par un nom distingué (DN) qui ressemble à une structure en forme de chemin commençant à la racine de l’annuaire (le segment le plus à droite) :

uid=alice,ou=people,dc=wonderland,dc=net

Pour authentifier un utilisateur avec un annuaire LDAP, vous devez d’abord obtenir son DN ainsi que son mot de passe.

Avec un formulaire de connexion, les gens entrent généralement un identifiant simple tel que leurusername ou leur adresse e-mail. Vous ne vous attendez pas à ce qu’ils mémorisent le DN de leur entrée de répertoire. Ce ne serait pas pratique.

Pour résoudre ce problème, une résolution DN entre en jeu. Elle prend le nom ou le courriel de l’utilisateur, puis lance une recherche contre les attributs de nom ou de courriel de toutes les entrées d’utilisateur pour trouver le DN d’entrée correspondant. Les annuaires emploient une indexation et une mise en cache très efficaces, donc ces recherches sont généralement très rapides.

Les attributs d’annuaire à rechercher sont définis dans le paramètre searchFilterconfiguration.La configuration par défaut de LdapAuth recherche les attributs UID et email. Le caractère générique%u est remplacé par l’identifiant de l’utilisateur saisi dans le formulaire de connexion :

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u))

Si vous voulez rechercher uniquement l’UID, le filtre de recherche ressemblerait à ceci :

ldapAuth.dnResolution.searchFilter = (uid=%u)

Si vous voulez rechercher l’UID, l’email et le numéro d’employé, étendez le filtre à

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u)(employeeNumber=%u))

Deux choses importantes à observer lors de la configuration de la résolution DN et de la création de nouvelles entrées d’utilisateur dans le répertoire:

  • Les attributs – nom d’utilisateur, email, etc – avec lesquels les utilisateurs se connectent doivent êtreuniques. Si deux entrées sont trouvées pour avoir le même attribut d’identification,par exemple l’email, l’authentification sera rapidement refusée.

  • Assurez-vous que chaque utilisateur qui est censé se connecter a un attribut défini pour l’attribut d’identification. Par exemple, si les utilisateurs vont se connecter avec leur adresse e-mail, assurez-vous que tous les comptes ont un attribut e-mail défini.Sinon, l’authentification échouera.

L’API Web LdapAuth ne révèle pas dans la réponse d’authentification la cause de l’échec de la connexion – qu’il s’agisse d’un mauvais nom d’utilisateur, d’un mauvais mot de passe ou des deux. Pour dépanner les situations où un utilisateur ne peut pas se connecter malgré la saisie d’un nom d’utilisateur et d’un mot de passe corrects, vérifiez les journaux du service.

Si une connexion a été rejetée en raison d’un mauvais nom d’utilisateur, une ligne comme celle-ci apparaîtra dans le journal :

2012-10-01 10:52:51,460 INFO – user.auth: username=tom authenticated=false message=Invalid username

Si le nom d’utilisateur a été correctement résolu, mais que le mot de passe était mauvais :

2012-10-01 10:55:05,662 INFO – user.auth: username=alice DN=uid=alice,ou=people,dc=wonderland,dc=net authenticated=false message=Invalid password

Si nous avons correctement résolu le DN d’entrée de répertoire de l’utilisateur, nous pouvons passer à l’étape suivante – vérifier le mot de passe.

Etape 2 – Validation du mot de passe de l’utilisateur

Les mots de passe sont vérifiés par une commande LDAP appelée bind. Une connexion est ouverte au serveur d’annuaire, puis une demande est envoyée pour authentifier laconnexion comme un utilisateur particulier en passant son DN d’entrée et son mot de passe :

DN: uid=alice,ou=people,dc=wonderland,dc=netpassword: secret

Si les informations d’identification sont correctes, le serveur d’annuaire renvoie un succès. Sinon, il renvoie une erreur LDAP Invalid credentials (code 49).

Des choses importantes à noter ici :

  • Le mot de passe est vérifié par rapport à un attribut de l’entrée de l’utilisateur dédié à cet effet. Si vous utilisez un schéma d’annuaire standard, cet attribut est appelé userPassword. Dans MS Active Directory, le nom de cet attribut est unicodePwd. Assurez-vous que chaque utilisateur qui est censé se connecter a un attribut de mot de passe défini. Sinon, l’authentification échouera.

  • Les valeurs des mots de passe sont souvent hachées et peuvent être protégées de manière supplémentaire, par exemple en les rendant en écriture seule. Par conséquent, une simple lecture et comparaison LDAP ne fonctionnera généralement pas ici. La commande bind est toujours la méthode préférée.

  • Les mots de passe sont généralement sensibles à la casse.

Encore, n’oubliez pas que les fichiers journaux sont vos amis. Ils enregistrent les détails de chaque tentative de connexion et peuvent être utilisés pour un dépannage rapide lorsque l’authentification ne fonctionne pas comme prévu. Si vous avez besoin d’aide pour configurer LdapAuthget en contact avec nous.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.