Parece que há um problema de codificação acontecendo em algum lugar. Eu não posso te dizer onde está, mas posso sugerir como encontrá-lo.
Pelo que entendi, existem 5 locais onde a codificação pode estar sendo manipulada ou interpretada incorretamente. Estes são:
- Navegando transformando caracteres em bytes para enviar para o servidor da web
- Apache compreendendo esses bytes para construir a string de senha
- Apache + OpenLDAP transformando a string de senha em bytes para enviar para o servidor LDAP
- O Active Directory transforma os bytes na solicitação de ligação LDAP em algo que pode ser comparado ao seu banco de dados de senhas
- O Active Directory transforma caracteres em bytes ao definir a senha do usuário
Supondo que você pode fazer login no Windows como usuário, sabemos que o item 5 não é problema seu. O que você precisa fazer é identificar onde o seu problema vem. Meu palpite é que está nos passos 2 ou 3, mas não tenho certeza.
Primeiro, verifique se você não está usando https para conversar com o servidor da Web e não está usando ldaps para conversar com o servidor LDAP. (Você pode não querer isso para produção, mas facilita a vida). Agora, use wireshark para farejar o tráfego para as duas pernas, navegador - > Apache e Apache - > DE ANÚNCIOS. Você vê as informações corretas lá?Em seguida, defina o nível de log no Apache para depurar e veja o que está impresso lá fora. Isso não mostrará a senha, mas, no nível de depuração, ela deverá mostrar outras informações, como o nome de usuário. Se você usa um nome de usuário falso contendo sotaques, eles aparecem corretamente?
Depois de identificar a etapa que está quebrando a codificação, você tem cerca de 90% do caminho para saber como corrigi-la!