从Apache服务器对LDAP(Active Directory,Server 2008)进行身份validation时,错误日志中会显示以下消息:
authentication failure for "/": Password Mismatch
只有当密码包含德文变音符(ä,ö,ü)时才会发生这种情况。 在更改密码或尝试使用不带变音器的其他帐户密码validation工作正常。
这是我的configuration:
AuthType Basic AuthzLDAPAuthoritative off AuthLDAPURL "ldap://[SERVER]:3268/DC=[DOMAIN]?sAMAccountName?sub?(objectClass=user)" AuthLDAPBindDN "user" AuthLDAPBindPassword "pass" require valid-user
我在Debian(2.6.26-2-686)下使用Apache2(2.2.16-6 + squeeze1)。 有趣的是,上面的configuration一直工作到昨天(即使是带有元音变音的密码),我没有碰它(我发誓;-))。 我已经find了同样的问题,但没有解决scheme的其他人。
有没有人有一个想法如何解决这个问题,或者干脆旁边可能找出错误的模块呢?
最好的问候,斯蒂芬
这似乎是在某处发生编码问题。 我不能告诉你它在哪里,但我可以build议如何find它。
据我了解,有5个地方的编码可能被错误地处理或解释。 这些是:
假设你可以作为用户login到Windows,那么我们知道#5不是你的问题。 你需要做的是确定问题出现在哪里。 我的直觉是它在步骤2或3,但我不能确定。
首先,确保您不是使用https与Web服务器通信,也不是使用ldaps与LDAP服务器通信。 (你可能不希望这样的生产,但它使生活更容易)。 现在,使用wireshark来嗅探两条腿的stream量,浏览器 – > Apache和Apache – > AD。 你在那看到正确的信息吗?
接下来,在Apache中设置日志级别进行debugging,并查看打印出的内容。 这不会显示你的密码,但在debugging级别,它应该显示你的其他信息,如用户名。 如果您使用包含口音的假用户名,它们是否正确显示?
一旦你确定了破解编码的步骤,你就知道如何解决这个问题了。