我正在使用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'}
当您在ldap中执行idsldapmodify操作而不使用-k选项进行管理控制时,会出现此objectClassViolation错误。
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? 谢谢。