Actualmente trato de cambiar contraseñas en nuestra Envoirenment de Active Directory a través de LDAP en Linux ya que los usuarios en cuestión no tienen acceso a una máquina de Windows y queremos mantenerlo de esa manera . Para cambiar la contraseña, actualmente estoy atascado averiguando cómo usar ldapmodify para hacerlo. Después de un montón de lectura en diferentes sitios/foros/grupos de noticias estoy mucho más confundido que antesInfracción de LDAP Violación al cambiar contraseña en AD mediante ldapmodify
Sin embargo: Trato el siguiente comando para hacerlo:
ldapmodify -f ldif.example -H ldaps://lab01-dc01.example.com -D 'CN=test,CN=users,DC=lab01,DC=example,DC=com' -x -W
El contenido de la ldif.example:
dn: CN=test,CN=Users,DC=lab01,DC=example,DC=com
changetype: modify
delete: unicodePwd
unicodePwd:: V3VQdXV1STEyLg==
-
add: unicodePwd
unicodePwd:: QmxhVVVraTEyLg==
-
(no se preocupe - esas contraseñas no se utilizan en cualquier lugar y no es un envoirenment producción)
ahora - cada vez que ejecutar el comando me sale el siguiente error:
modifying entry CN=test,CN=Users,DC=lab01,DC=example,DC=com"
ldapmodify: Constraint violation (19)
additional info: 0000216C: AtrErr: DSID-03190EB0, #1:
0: 0000216C: DSID-03190EB0, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 9005a (unicodePwd)
Ahora, después de lo que he leído la razón de este error es o bien que la contraseña está mal formateado o que la política de contraseñas no permite la contraseña que he usado. Revisé la política - varias veces ahora - y la nueva contraseña definitivamente cumple con la política por todos los criterios. Si configuro la contraseña usando una máquina con Windows, también funciona bien (por supuesto, cambié la "contraseña antigua" y la "contraseña nueva" después porque la política no me permite cambiar a una contraseña anterior). La contraseña que ingresé después de pasar la opción "-W" a ldapmodify también es definitivamente correcta, de lo contrario, el error escupido por ldapmodify es que utilicé credenciales no válidas en lugar de una violación de restricción. Entonces, la única razón por la que se me ocurre es una contraseña mal formateada, pero no puedo averiguar de dónde viene el mal formato ya que utilizo el algoritmo base64 normal para codificar la contraseña.
¿Alguien tiene una idea de lo que está pasando? ¿Alguien puede empujarme en la dirección correcta?
La ayuda es muy apreciada y le agradezco de antemano.
Editar: Algo que me molesta: Cuando ejecuto las cadenas codificadas a través de base64 me sigue diciendo "Invalid Input". Ahora, continué y simplemente re-codifiqué las contraseñas con el uso de base64 en la máquina Linux, pero cuando vuelvo a ejecutar la cadena generada a través de la función de decodificación, base64 me sigue diciendo "Invalid Input" ... Las cadenas, sin embargo, ligeramente cambiado entre la cadena codificada windows-base64 y la cadena codificada de linux. Pero base64 solo dice "Invalid input" (entrada inválida) sin importar lo que ponga allí.
Edit2: Nevermind - leyendo el propósito de la función Supongo que arroja este error debido a los puntos y el signo de exclamación en la contraseña.
No estoy seguro de que deba hacer ninguna codificación en absoluto. El servidor LDAP debería hacer eso. Intente proporcionar ambas contraseñas en texto sin formato. – EJP
Sí, de hecho, sin codificación de la contraseña parece funcionar bien. Tal como dije: leí mucho sobre este tema y todo lo que leí sugirió que tenía que usar una cadena codificada para modificar la contraseña. Obviamente, esto no es del todo cierto. ¡Gracias! – henryford