example - python ldap3
Python 3.5, ldap3 y modify_password() (4)
Pruebe con ldaps: // en lugar de ldap: //. o no use el esquema en absoluto y pase use_ssl = True en la definición del servidor. La conexión AD debe usar ssl para modificar la contraseña.
He estado tirando de mi cabello tratando de enviar una solicitud para actualizar mi propia contraseña a través de un script. aquí está el código:
#!/usr/bin/python3.5
from ldap3 import Server, Connection, NTLM, ALL
server = Server(''ldap://192.168.0.80'', use_ssl=True)
conn = Connection(server, user="local//dctest", password="Pa55word1", authentication=NTLM, auto_bind=True)
dn = "CN=dctest,CN=Users,DC=home,DC=local"
conn.extend.microsoft.modify_password(dn, new_password="Pa55word2", old_password="Pa55word1")
El error que recibo es:
{''dn'': '''', ''tipo'': ''modifyResponse'', ''description'': ''unwillingToPerform'', ''referrals'': None, ''result'': 53, ''message'': ''00002077: SvcErr: DSID-03190E44, problema 5003 (WILL_NOT_PERFORM), datos 0 / n / x00 ''}
¿Alguna idea de lo que estoy haciendo mal?
Tengo acceso completo al DC y me he asegurado de que las contraseñas sean correctas, etc. He leído todos los documentos y no puedo entenderlo.
cualquier ayuda sería genial!
¿Qué versión de ldap3 estás usando? Del código fuente de ldap3 versión 2.2 me parece que la función debe usarse de una manera similar:
#!/usr/bin/python3.5
from ldap3 import Server, Connection, NTLM, ALL
server = Server(''ldap://192.168.0.80'', use_ssl=True)
conn = Connection(server, user="local//dctest", password="Pa55word1", authentication=NTLM, auto_bind=True)
res = ldap3.extend.microsoft.modifyPassword(conn, user, "new_Pa55word2", "old_Pa55word1")
ldap3.modify_password () a partir de la versión 0.9.4.2 no funciona con Active Directory, porque usa la contraseña Modificar operación extendida, que no es compatible con AD. MS parece haber encontrado una manera de hacer cosas diferentes con AD , parece. El autor ldap3 (cannatag) era consciente de esto y agregó ad_modify_password () poco después. Deberá usar una versión más reciente de ldap3.
Bien, gracias a todos por su ayuda y a los desarrolladores en github.
el código que usé para hacer que esto funcionara al final fue ...
from ldap3 import Server, Connection
server = Server(''ldaps://<AD server address>'', use_ssl=True)
conn = Connection(server, user="<domain>//<username>", password="<current password>", auto_bind=True)
dn = ''CN=<username>,OU=Users,DC=<dominaname>''
res = conn.extend.microsoft.modify_password(dn, old_password=''<current password>'', new_password=''<new password>'')
print(res)
Pensé que publicaría la solución de trabajo ya que no parece haber ninguna en los internets. Dios apresura mis compañeros devops personas.