Sto tentando di aggiornare un po 'di codice in python3, usando la versione "0.9.7.4" di ldap3. (https://pypi.python.org/pypi/ldap3)Come associare (autenticare) un utente con ldap3 in python3
In precedenza, ho usato python-ldap con python2 per autenticare un utente in questo modo:
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")
Ciò restituisce correttamente (97, [], 2, [])
sulla password corretta, e solleva ldap.INVALID_CREDENTIALS
su un tentativo di binding utilizzando una password errata .
Utilizzando ldap3
in python3 sto facendo la seguente:
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()
Sta aumentando la seguente eccezione:
ldap3.core.exceptions.LDAPInvalidCredentialsResult: LDAPInvalidCredentialsResult - 49 - invalidCredentials - [{'dn': '', 'message': '', 'type': 'bindResponse', 'result': 0, 'saslCreds': 'None', 'description': 'success', 'referrals': None}]
sto usando il valore user_dn
restituito dalla ricerca LDAP di python2, dal momento che questo sembra funzionare in python2.
Come posso ottenere questo per associare correttamente utilizzando ldap3 in python3?
(Una cosa strana, ho notato, è che LDAPInvalidCredentialsResult del LDAP3 include 'description': 'success'
. Sto indovinando questo significa solo risposta ricevuto con successo ...)
Testato correttamente utilizzando la * password * errata e rilevato che l'Eccezione risultante è diversa, 'ldap3.core.exceptions.LDAPInvalidCredentialsResult: LDAPInvalidCredentialsResult - 49 - invalidCredentials - Nessuno - Nessuno - bindResponse - None' e non contiene' ' descrizione ':' successo'' ... bug? – monkut