Apache中的密码处理到远程LDAP服务器

我有一个Apache服务器,我有一个受保护的目录的网站。 通过针对删除LDAP服务器的基本身份validation(不在同一台计算机上)进行保护。

<Location "/mywebapp/myprotected"> AuthzLDAPAuthoritative on AuthType basic AuthName "Enter your credentials" AuthBasicProvider ldap AuthLDAPURL "ldap://ldap.differentserver.org:3268/dc=company,dc=org?sAMAccountName?sub?(&(objectCategory=*)(objectClass=user))" Require valid-user AuthLDAPBindDN 'cn="Adminaccount,OU=Service IDs,OU=Application IDs,OU=Support,OU=Administration,dc=company,dc=org' AuthLDAPBindPassword adminpassword </Location> 

这组目前正在工作。 所有连接都是纯文本。

我不明白为什么当apache服务器与ldap.differentserver.org交互时,我在wireshark中看不到我的密码。 当我在通往Web服务器的popup对话框中input密码时,会看到我的密码,但不会从Web服务器到达LDAP服务器。 我看到AuthLDAPBindPassword。

在wireshark中,我看到的唯一协议是TCP,DNS,LDAP,HTML。 我没有看到任何TLS协议消息,所以我假设LDAP服务器没有升级到TLS。

我以纯文本的forms在我的用户名上看到LDAPsearch消息,但我的密码似乎不在任何消息中。

系统正在工作 – 我只想解释LDAP如何获得我的正常用户密码,因为我没有看到它。

我find了。 它被编码有hex字节。

Ldap将密码存储为散列。 (即encryption)。 没有深入了解mod_authz和ldap之间交互的技术细节,Apache会使用存储在ldap中的哈希来检查您在login窗口中提供的密码的哈希。

顺便说一句:你应该做的所有httpsvalidation与Apache的原因,你已经观察到:任何人都可以嗅探你的stream量,看到你的明文密码。