No AD, há dois tipos de operações para alterar a senha de um usuário - uma alteração , que pode ser executada anonimamente porque exige a senha antiga como parte da solicitação e uma redefinição , que não requer a senha antiga e deve ser feito por um usuário com acesso para poder redefinir as senhas da conta que está sendo segmentada.
Neste caso, o aplicativo de software está executando a operação de reinicialização, sem conhecimento da senha antiga do usuário, mas autenticado como presumivelmente uma conta de serviço com os direitos necessários.
Do ponto de vista do AD, a senha está sendo redefinida administrativamente; o histórico de senhas nunca é aplicado nesse caso, já que o administrador que está fazendo a redefinição não deve saber as senhas antigas do usuário - se elas tiverem o hábito de configurar o novo passe para, digamos, Thursday1
, operação de reset seria bastante confusa.
Apesar de uma má experiência do usuário, o melhor mecanismo que posso pensar para lidar com isso seria fazer com que o aplicativo da Web redefinisse a senha (talvez algo que não entrasse, apenas gerasse) e depois definisse "deve alterar a senha no próximo login "sinalize na conta para forçar o usuário a fazer imediatamente uma operação de alteração de senha, que aplicará o histórico.
Há alguma discussão sobre o uso de APIs LDAP no .Net para atingir o objetivo de impor o histórico nesse tipo de redefinição aqui , mas não tenho certeza se esta será uma opção para você, dependendo do aplicativo que você está usando; se você controlar o código e a biblioteca LDAP que você está usando suportar controles, isso deve ser possível.