web-dev-qa-db-fra.com

LDAP - Comment vérifier une combinaison nom d'utilisateur / mot de passe?

L'utilisation de LDAP revient à vérifier un nom d'utilisateur/mot de passe aussi simple que de tenter de se lier en tant qu'utilisateur et de noter les résultats, ou existe-t-il une fonction spéciale LDAP de "vérification du mot de passe"?

J'essaie d'obtenir un peu plus de compréhension "en coulisses" tout en travaillant sur un problème de configuration du référentiel LDAP en désordre.

(Remarque: il s'agit de situations dans lesquelles le mot de passe n'est pas stocké en tant que hachage dans une propriété personnalisée; cette situation est facile à gérer)

25
DrStalker

LDAP prend en charge une comparaison de userPassword. Vous envoyez le mot de passe, le serveur fait la comparaison et renvoie vrai ou faux. Il s'agit de la méthode de connexion non requise pour authentifier les utilisateurs.

17
geoffc

Examinez le fonctionnement étendu WhoAmI (RFC 4532).

WhoAmI sert vraiment un seul objectif: valider les informations d'identification de liaison soumises. Cela ne devrait pas affecter ni provoquer de "restrictions de connexion" (que je sache).

WhoAmI peut être fait en utilisant un binaire dédié (tel que "ldapwhoami"), ou il peut être fait en utilisant Net :: LDAP :: Extension :: WhoAmI (Perl) ou un autre langage de ce type qui prend en charge les opérations LDAP. Notez que "tester un mot de passe" à l'aide d'une fonction de "recherche" est une méthode de test peu judicieuse.

Par exemple, si mon DN est "uid = max, ou = users, dc = company, dc = com" et mon mot de passe "@secret", on pourrait le faire via le binaire dédié sur une boîte Linux (note -ZZ est utilisé pour la confidentialité TLS, éventuellement non prise en charge ou facultative dans votre environnement):

ldapwhoami -x -w "@secret" -D uid=max,ou=users,dc=company,dc=com -ZZ -H ldap://address.of.your.ldapserver/

Si la combinaison utilisateur/passe est correcte, la réponse renvoyée est:

dn: uid = max, ou = users, dc = company, dc = com

Si la combinaison utilisateur/passe n'est PAS correcte, la réponse renvoyée est (généralement):

(49) Identifiants invalides

Cela pourrait signifier, comme je l'ai dit, que le mot de passe et/ou le nom d'utilisateur sont incorrects, que l'utilisateur n'existe pas ou que les ACL du serveur LDAP sont brisées de telle sorte que l'authentification n'est pas possible. Plus souvent qu'autrement, son combo utilisateur/passe est mal tapé, ou l'utilisateur n'existe pas.

En conclusion, l'opération LDAPWhoAmI est une méthode très légère et simple de validation des informations d'identification. Il fonctionne également via d'autres mécanismes (par exemple: Kerberos Single Sign-On, Digest-MD5, etc.).

8
maximum ldap

Attention à l'utilisation de bind pour vérifier le nom d'utilisateur/mot de passe, sur certains systèmes, cela comptera comme une connexion, et avec des restrictions de connexion, il pourrait échouer.

Utiliser compare est une meilleure option pour vérifier simplement le mot de passe.

4
casperghst42

Un lien comme cet utilisateur est suffisant. Le mot de passe est vérifié dans le processus de liaison.

3
user207421