Я использую модуль python ldap3 для подключения к серверу IBM Security Directory Server для изменения пароля пользователя. Эта операция хорошо работает, используя:
s = Server('server')
c = Connection(s, user = 'username', password = 'password')
c.modify('user_dn', {'userPassword':[(MODIFY_REPLACE,['new_password'])]})
Однако, если я сейчас попытаюсь изменить некоторые из операционных атрибутов, таких как pwdReset или pwdChangedTime, из-за некоторых действующих политик паролей:
conn.modify('user_dn', {'pwdReset':[MODIFY_REPLACE, [False]]})
Я получаю conn.result
{'result': 65, 'description': 'objectClassViolation', 'dn': '',
'message': '', 'referrals': None, 'type': 'modifyResponse'}
Эта ошибка objectClassViolation ожидается, когда вы выполняете операцию idsldapmodify в ldap без использования опции -k для административного контроля.
idsldapmodify -D admin_user -w password
dn: user_dn
changetype: modify
replace: pwdReset
pwdReset: False
Операция 0, изменяющая запись
ldap_modify: нарушение класса объекта
idsldapmodify -D username -w password -k
dn: user_dn
changetype: modify
replace: pwdReset
pwdReset: False
Операция 0, изменяющая запись
Успешное изменение.
Есть идеи, как сказать ldap3 использовать какой-то административный контроль -k для операционных атрибутов?
Спасибо.