web-dev-qa-db-fra.com

Comment lier (authentifier) ​​un utilisateur avec LDAP3 en Python3

J'essaie de mettre à jour du code en python3, en utilisant ldap version '0.9.7.4'. ( https://pypi.python.org/pypi/ldap )

Auparavant, j'utilisais python-ldap avec python2 pour authentifier un utilisateur comme celui-ci:

import ldap
address = "ldap://Host:389"
con = ldap.initialize(address)
base_dn = "ourDN=jjj"
con.protocol_version = ldap.VERSION3
search_filter = "(uid=USERNAME)"
result = con.search_s(base_dn, ldap.SCOPE_SUBTREE, search_filter, None)  
user_dn = result[0][0]  # get the user DN
con.simple_bind_s(user_dn, "PASSWORD")

Cela renvoie correctement (97, [], 2, []) sur le mot de passe correct et lève ldap.INVALID_CREDENTIALS lors d'une tentative de liaison avec un mot de passe incorrect.

En utilisant ldap3 en python3, je fais ce qui suit:

from ldap3 import Server, Connection, AUTH_SIMPLE, STRATEGY_SYNC, ALL
s = Server(Host, port=389, get_info=ALL)
c = Connection(s, authentication=AUTH_SIMPLE, user=user_dn, password=PASSWORD, check_names=True, lazy=False, client_strategy=STRATEGY_SYNC, raise_exceptions=True)
c.open()
c.bind()

Cela soulève l'exception suivante:

ldap3.core.exceptions.LDAPInvalidCredentialsResult: LDAPInvalidCredentialsResult - 49 - invalidCredentials - [{'dn': '', 'message': '', 'type': 'bindResponse', 'result': 0, 'saslCreds': 'None', 'description': 'success', 'referrals': None}]

J'utilise le user_dn valeur retournée par la recherche ldap de python2, car cela semble fonctionner en python2.

Comment puis-je obtenir que cela se lie correctement en utilisant ldap3 en python3?

( Une chose étrange, j'ai remarqué, est que LDAPInvalidCredentialsResult du LDAP3 inclut 'description': 'success'. Je suppose que cela signifie simplement que la réponse a bien été reçue ... )

11
monkut

Je suis l'auteur de ldap3, veuillez définir raise_exceptions=False Dans la définition de connexion et vérifier le connection.result Après la liaison. Vous devriez obtenir la raison pour laquelle votre bind() échoue.

22
cannatag