У меня есть следующий код
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
Согласно python-ldap3
документации, метод rebind
должен поднимать LDAPBindError
Документы:
# 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)
В случае, если учетные данные недействительны или если сервер не позволяет вам выполнить повторную привязку, сервер может внезапно закрыть соединение. Это условие проверяется методом rebind(), и в случае обнаружения будет возбуждено исключение LDAPBindError. Ссылка на это< /а>
Проблема в том, что хотя кажется, что все работает нормально, я могу убедиться в этом, напечатав свойство result
.
При успешном повторном связывании: {'result': 0, 'description': 'success', 'type': 'bindResponse', 'message': '', 'dn': '', 'referrals': None, 'saslCreds': None}
При неудачной повторной привязке: {'type': 'bindResponse', 'dn': '', 'result': 49, 'description': 'invalidCredentials', 'message': '', 'referrals': None, 'saslCreds': None}
Хотя при неудачной повторной привязке исключение не возникает. Я понял что-то не так и не должен вызывать ошибку? В противном случае, почему это не так, разве я не прав?
Спасибо за любую помощь.