Как изменить пароль пользователя с помощью функции ldap passwd_s - PullRequest
0 голосов
/ 29 января 2020

Я хотел бы изменить пароль пользователя, указав старый и новый пароль.

import ldap
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
ldap.set_option(ldap.OPT_REFERRALS, 0)

con = ldap.initialize("ldaps://ldaps-direct.prod.mydomain.com")

tdn = "CN=test_user,OU=ServiceAccounts,OU=UserBase,DC=corp,DC=mydomain,DC=com"
new_password = "new_password"
old_password = "old_password"

client.passwd_s(tdn, '"%s"' % old_password, '"%s"' % new_password )

К сожалению, я получаю сообщение об ошибке:

ldap.PROTOCOL_ERROR: {'desc': 'Protocol error', 'info': '0000203D: LdapErr: DSID-0C090F8B, comment: Unknown extended request OID, data 0, v2580'}

Есть ли способ исправить это?

1 Ответ

1 голос
/ 29 января 2020

Microsoft AD не полностью соответствует стандарту LDAPv3. Я не уверен, поддерживает ли он операцию ldappasswd.

Из документации python -ldap:

Для операций LDAP модуль оборачивает клиентскую библиотеку OpenLDAP, libldap.

Таким образом, существует высокая вероятность того, что он не будет обрабатывать особенности AD

Существует модуль python, который выполняет операцию c для изменения пароля Microsoft: https://ldap3.readthedocs.io/ldap3.extend.microsoft.modifyPassword.html

...