Ldap 3 Python Смена пароля
ad_dn = "CN=User,OU=Office,DC=domen,DC=domen"
username = 'User'
new_pwd = 'SD782Jsdaas2'
newpwd_utf16 = '"{0}"'.format(new_pwd).encode('utf-16-le')
mod_list = [
(MODIFY_REPLACE, "unicodePwd", newpwd_utf16),
]
conn.modify(ad_dn.format(username), mod_list)
Пытаюсь поменять пароль, выдаёт ошибку:
ldap3.core.exceptions.LDAPChangeError: changes must be a dictionary
Как я могу это решить?
Ответы (2 шт):
Автор решения: Violet
→ Ссылка
def search_ad(last='*', login='*'):
c.bind()
c.search('ou=Офис,dc=DOMAIN,dc=local',
'(&(objectCategory=Person)(sn={})(sAMAccountName={}))'.format(last, login), SUBTREE,
attributes=['sAMAccountName', 'givenName', 'sn', 'cn', 'whenCreated', 'lastLogon', 'pwdLastSet',
'msDS-UserPasswordExpiryTimeComputed', 'memberOf', 'ipPhone', 'lockoutTime',
'distinguishedName'])
a = c.entries
c.unbind()
return a
place = search_ad(last=login.split(" ")[1])
for i in place:
place = str(i['distinguishedName'])
place = place[place.find(",") + 1:]
c.bind()
a = c.extend.microsoft.modify_password(user='cn=' + login + ',' + str(place), new_password=uis_password)
c.unbind()
Автор решения: Dmitry
→ Ссылка
Спасибо за ваш ответ - но ваш пример ничего не изменил. Пароль сменить не получается. В вашем примере есть поиск - по факту нужен только DN, для примера работы скрипта я могу его получить из PowerShell скриптом:
Get-ADUser -Identity _user_logon_ -Properties
* | Select-Object _atrr_name_