apache ldap身份validation花费太长时间

我configuration了apache2.2(CentOS 5.6)为Active Directory提供ldap身份validation。

<Directory "/var/www/html"> AuthType Basic AuthName "Authenticate with domain account." AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthLDAPBindDN cn=Administrator,cn=users,dc=example,dc=com AuthLDAPBindPassword secret AuthLDAPURL ldap://192.168.56.110:389/dc=example,dc=com?sAMAccountName?sub?(objectClass=*) Require valid-user ... </Directory> 

它的工作,但它需要太长时间。 我用tcpdump分析了stream量。时间戳显示在searchResEntry(当Active Directory响应时,我尝试login的用户帐户的DN)和bindRequest(当apache尝试绑定为请求的用户)。

这是这个error_log输出:

 [Sat Dec 10 07:06:37 2011] [debug] mod_authnz_ldap.c(390): [client 192.168.56.1] [2488] auth_ldap authenticate: using URL ldap://192.168.56.110:389/dc=example,dc=com?sAMAccountName?sub?(objectClass=*) [Sat Dec 10 07:10:37 2011] [debug] mod_authnz_ldap.c(489): [client 192.168.56.1] [2488] auth_ldap authenticate: accepting peter [Sat Dec 10 07:10:37 2011] [debug] mod_authnz_ldap.c(971): [client 192.168.56.1] [2488] auth_ldap authorise: declining to authorise [Sat Dec 10 07:10:37 2011] [debug] mod_authnz_ldap.c(390): [client 192.168.56.1] [2475] auth_ldap authenticate: using URL ldap://192.168.56.110:389 dc=example,dc=com?sAMAccountName?sub?(objectClass=*), referer: http://192.168.56.200/projeto/ [Sat Dec 10 07:10:37 2011] [debug] mod_authnz_ldap.c(489): [client 192.168.56.1] [2475] auth_ldap authenticate: accepting peter, referer: http://192.168.56.200/projeto/ [Sat Dec 10 07:10:37 2011] [debug] mod_authnz_ldap.c(971): [client 192.168.56.1] [2475] auth_ldap authorise: declining to authorise, referer: http://192.168.56.200/projeto/ [Sat Dec 10 07:10:37 2011] [error] [client 192.168.56.1] File does not exist: /var/www/html/projeto/style.css, referer: http://192.168.56.200/projeto/ [Sat Dec 10 07:10:37 2011] [debug] mod_authnz_ldap.c(390): [client 192.168.56.1] [2475] auth_ldap authenticate: using URL ldap://192.168.56.110:389/dc=example,dc=com?sAMAccountName?sub?(objectClass=*), referer: http://192.168.56.200/projeto/ [Sat Dec 10 07:10:37 2011] [debug] mod_authnz_ldap.c(489): [client 192.168.56.1] [2475] auth_ldap authenticate: accepting peter, referer: http://192.168.56.200/projeto/ [Sat Dec 10 07:10:37 2011] [debug] mod_authnz_ldap.c(971): [client 192.168.56.1] [2475] auth_ldap authorise: declining to authorise, referer: http://192.168.56.200/projeto/ 

正如你所看到的,在第一行和第二行之间需要四分钟的时间。

任何线索?

PS。 这里是wireshark显示的tcpdump捕获的链接 。 如您所见,Active Directory即时响应。 需要太长时间的是来自apache的bindRequest(在图像中突出显示)。

即时通讯猜测你的LDAP查询是否尝试使用ldap-search直接从命令行运行该查询

从你的filter的外观:

 ldap://192.168.56.110:389/dc=example,dc=com?sAMAccountName?sub?(objectClass=*) 

这是一个非常广泛的search,那实际上是在从基地dc=example,dc=comsearch每个logging,看它是否有一个名为sAMAccountName的属性,取决于你在树中有多less条目,这可能需要一些时间

你最好改变它像这样的东西:

ldap://192.168.56.110:389/ou=People,dc=example,dc=com?sAMAccountName?one?(objectClass=*)

但首先使用ldapsearch实用程序validation您的结果