Je le code suivantméthode Python LDAP3 rebind ne soulève pas d'erreur
from ldap3 import Server, Connection, SUBTREE, ALL_ATTRIBUTES, LDAPBindError
...
...
def search(self, id):
if not self._connect.bind():
print('error in bind', self._connect.result)
else:
self._connect.search(
search_base=self._base_dn,
search_filter='(uid='+id+')',
search_scope=SUBTREE
)
userdn = self._connect.response[0]['dn']
try:
self._connect.rebind(user=userdn, password='password')
print(self._connect.result)
except LDAPBindError:
print('error in rebind', self._connect.result)
self._connect.unbind()
pass
Selon python-ldap3
documentation la méthode rebind
devrait soulever une LDAPBindError
Docs:
# import class and constants
from ldap3 import Server, Connection, ALL, LDAPBindError
# define the server
s = Server('servername', get_info=ALL) # define an unsecure LDAP server, requesting info on DSE and schema
# define the connection
c = Connection(s, user='user_dn', password='user_password')
# perform the Bind operation
if not c.bind():
print('error in bind', c.result)
try:
c.rebind(user='different_user_dn', password='different_user_password')
except LDAPBindError:
print('error in rebind', c.result)
Dans le cas où les informations d'identification ne sont pas valides ou si le serveur ne vous autorise pas à rver pourrait brusquement fermer la connexion. Cette condition est vérifiée par la méthode rebind() et une exception LDAPBindError sera levée si caugh. Link to this
Le problème est que, bien que tout semble fonctionner très bien, je peux vérifier que l'impression de la propriété result
.
Sur succeful retirage: {'result': 0, 'description': 'success', 'type': 'bindResponse', 'message': '', 'dn': '', 'referrals': None, 'saslCreds': None}
Sur retirage a échoué: {'type': 'bindResponse', 'dn': '', 'result': 49, 'description': 'invalidCredentials', 'message': '', 'referrals': None, 'saslCreds': None}
Bien que pas REBIND aucune exception est levée. Ai-je compris quelque chose de mal et ne devrait pas faire d'erreur? Sinon, pourquoi cela n'a-t-il pas tort?
Merci pour toute aide.