OpenDJ, por defecto, no permite modificar la contraseña de los usuarios del directorio enviandola cifrada (pre-encoded form). A no ser que modifiquemos la opción que vamos a ver a continuación, la contraseña siempre se ha de enviar en claro y será OpenDJ quien la procesará y almacenará cifrada en el directorio.
El ejemplo práctico es el siguiente: intentamos hacer un ldapmodify de la contraseña de usuario y en lugar de enviarla en claro la enviamos cifrada (SSHA):
# bin/ldapmodify -p 389 -D "CN=Directory Manager" Password for user 'CN=Directory Manager': dn: uid=user.9,ou=People,o=test changetype: modify replace: userPassword userPassword: {SSHA}jCUeOLzfmyszzNdZCu727QP/P4ma39kHmLQBZA== Processing MODIFY request for uid=user.9,ou=People,o=test MODIFY operation failed Result Code: 19 (Constraint Violation) Additional Information: User passwords may not be provided in pre-encoded form
El error es claro: Additional Information: User passwords may not be provided in pre-encoded form.
La propiedad de configuración que permite modificar este parámeetro es allow-pre-encoded-passwords
. Con dsconfig
podemos ver que el valor por defecto es false. Tened en cuenta que en este caso revisamos la política de contraseñas por defecto. Si creáis vuestra propia política el valor debería consultarse ahí.
# bin/dsconfig -h localhost \ -p 4444 -D "cn=Directory Manager" \ get-password-policy-prop \ --policy-name "Default Password Policy" \ --advanced | grep allow-pre-encoded-passwords Password for user 'cn=Directory Manager': allow-pre-encoded-passwords : false
Para modificar el parámetro de la política de contraseñas a «true» ejecutamos el siguiente comando.
# bin/dsconfig -h localhost \ -p 4444 -D "cn=Directory Manager" \ set-password-policy-prop \ --policy-name "Default Password Policy" \ --set allow-pre-encoded-passwords:true \ -X -n --Trustall -w XXXXXX
Y si volvemos a ejecutar el ldapmodify ya podemos enviar el password cifrado:
# bin/ldapmodify -p 389 -D "CN=Directory Manager" Password for user 'CN=Directory Manager': dn: uid=user.9,ou=People,o=test changetype: modify replace: userPassword userPassword: {SSHA}jCUeOLzfmyszzNdZCu727QP/P4ma39kHmLQBZA== Processing MODIFY request for uid=user.9,ou=People,o=test MODIFY operation successful for DN uid=user.9,ou=People,o=test