Isso pode ser um pouco estranho, já que não tive sucesso em encontrar uma solução até agora.
Isso é instalado no CentOS 5.8 e usando o CentOS-Directory / 8.2.8 B2012.041.1227.
Simplesmente, estou usando um aplicativo que solicitará que o usuário altere sua senha ( OpenAM ). Isso funciona muito bem, mas se o DS está configurado para armazenar o histórico de senhas, o aplicativo cliente não consegue alterar a senha, constantemente indo "Senha no histórico". Isso não é muito útil, especialmente porque sei que a senha não foi usada anteriormente.
Depois de me sentar com o Wireshark, vi que o aplicativo cliente estava enviando a seguinte solicitação:
dn: uid=AUser,ou=People,dc=testldap
changetype: modify
delete: userpassword
userpassword: location
-
add: userpassword
userpassword: american_psycho
Que se cansa com "Senha no histórico". Eu tentei o mesmo pedido na linha de comando:
$ ldapmodify -h host -p 389 -D "uid=AUser,ou=People,dc=testldap" -w location
dn: uid=AUser,ou=People,dc=testldap
changetype: modify
delete: userpassword
userpassword: location
-
add: userpassword
userpassword: american_psycho
^D
Processing MODIFY request for uid=AUser,ou=People,dc=testldap
MODIFY operation failed
Result Code: 19 (Constraint Violation)
Additional Information: password in history
No entanto, se eu tentar o seguinte:
$ ldapmodify -h host -p 389 -D "uid=AUser,ou=People,dc=testldap" -w location
dn: uid=AUser,ou=People,dc=testldap
changetype: modify
delete: userpassword
-
add: userpassword
userpassword: american_psycho
^D
Processing MODIFY request for uid=AUser,ou=People,dc=testldap
MODIFY operation successful for uid=AUser,ou=People,dc=testldap
Então, obviamente, isso funciona, a única diferença é que eu não estou passando a senha antiga dessa vez. Entendo por que você deseja passar um valor a ser excluído (por exemplo, se for um atributo de vários valores), mas não entendo por que o DS está verificando o histórico de senhas ...
Eu verifiquei os arquivos de log e, mesmo com todo o log ativado, não vejo nada útil ...
Não há como configurar o aplicativo cliente para não enviar através da senha antiga sem forçar isso por conta própria, então estou realmente esperando que haja alguma maneira de configurar o Servidor de Diretório do CentOS para lidar com isso. Eu sei que isso é suportado pelo Active Directory (ou foi em algum momento): link Mas eu Não é possível descobrir como isso pode ser suportado no CentOS DS.