autenticação de ldap do apache demorando muito

1

Configurei o apache2.2 (CentOS 5.6) para fornecer autenticação ldap com o Active Directory.

<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>

Funciona, mas demora muito tempo. Analisei o tráfego com o tcpdump .. os timestamps mostram exatamente quatro minutos entre o searchResEntry (quando o Active Directory responde com o DN da conta do usuário que estou tentando efetuar login) e o bindRequest (quando o apache tenta ligar como o usuário solicitado ).

Aqui está a saída error_log para isso:

[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/

Como você pode ver, são necessários quatro minutos entre a primeira e a segunda linha.

Alguma pista?

Aqui está um link para a captura do tcpdump exibida com o wireshark. Como você pode ver, o Active Directory responde instantaneamente. O que leva muito tempo é o bindRequest do apache (destacado na imagem).

    
por beradero 13.12.2011 / 03:30

1 resposta

2

vou adivinhar sua consulta do ldap Você já tentou executar essa consulta diretamente da linha de comando usando o ldap-search

da aparência do seu filtro:

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

essa é uma pesquisa muito ampla, o que está realmente fazendo é pesquisar a partir da base dc=example,dc=com para cada registro para ver se ele tem um atributo chamado sAMAccountName , dependendo de quantas entradas você tiver nessa árvore. tempo

é melhor alterá-lo para algo como:

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

mas verifique seus resultados usando os utilitários de pesquisa do ldap primeiro

    
por 13.12.2011 / 04:23