Subversion: Apache mod_ldap - 30 segundos para primeira autenticação

1

Eu tenho um problema com relação à instalação do meu servidor Subversion com o Apache (mod_ldap e mod_authnz_ldap) e minha conexão LDAP com um Microsoft Active Directory Estou usando um sistema CentOS5 64Bit com o Collabnet Subversion EDGE.

O problema é a conexão com meu LDAP, porque ele precisa para a primeira autenticação exatamente 30 segundos.

Aqui estão os trechos do arquivo de log.

Primeira autenticação com myLdapUser :

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:00 2012] [debug] mod_authnz_ldap.c(403): [client xx.xx.xx.xx] [3122] auth_ldap authenticate: using URL ldap://10.10.10.11/DC=mycompany,DC=com?sAMAccountName?sub

==> /opt/csvn/data/logs/access_2012_04_24.log <==
xx.xx.xx.xx - myLdapUser [24/Apr/2012:10:42:00 +0200] "GET /svn/ HTTP/1.1" 200 132

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:30 2012] [debug] mod_authnz_ldap.c(518): [client xx.xx.xx.xx] [3122] auth_ldap authenticate: accepting myLdapUser
[Tue Apr 24 10:42:30 2012] [info] [client xx.xx.xx.xx] Access granted: 'myLdapUser' GET (null)

Como você pode ver, há um intervalo de tempo de 30 segundos usando o URL do ldap e a autenticação aceita. Eu recarrego a página após a primeira autenticação lenta, mas bem-sucedida, tudo é feito em um segundo, veja este snippet de arquivo de log:

==> /opt/csvn/data/logs/access_2012_04_24.log <==
xx.xx.xx.xx - myLdapUser [24/Apr/2012:10:42:51 +0200] "GET /svn/ HTTP/1.1" 200 132

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:51 2012] [debug] mod_authnz_ldap.c(403): [client xx.xx.xx.xx] [3123] auth_ldap authenticate: using URL ldap://10.10.10.11/DC=mycompany,DC=com?sAMAccountName?sub
[Tue Apr 24 10:42:51 2012] [debug] mod_authnz_ldap.c(518): [client xx.xx.xx.xx] [3123] auth_ldap authenticate: accepting myLdapUser
[Tue Apr 24 10:42:51 2012] [info] [client xx.xx.xx.xx] Access granted: 'myLdapUser' GET (null)

Uma olhada no servidor LDAP: primeiro ele é vinculado com sucesso, então ele faz uma solicitação de pesquisa muito rápida e obtém uma entrada de solicitação de pesquisa com os valores completos do usuário myLdapUser e o usuário não é autenticado ainda e depois 30 segundos, ele chama novamente o Active Directory com as informações do usuário da entrada de solicitação de pesquisa e, depois disso, o usuário é aceito.

Alguém tem uma ideia do que está acontecendo?

Eu também posto esta questão aqui, mas não é um problema de subversão, está relacionado ao Apache e mod_ldap, então eu acho que não vou conseguir ajuda lá: link

    
por Tim 24.04.2012 / 10:57

4 respostas

4

Por questões de integridade, você deve postar suas diretivas de configuração mod_authz_ldap, não apenas os fragmentos de log. Para mim isso soa como um problema de DNS em algum lugar entre o Apache e o AD, mas sem mais informações eu não posso ter certeza.

Você deve tentar fazer a autenticação manualmente usando, por exemplo, ldapsearch na máquina do CentOS e ver se consegue reproduzir o problema lá. Algo como:

ldapsearch -xLLLZ -D sAMAccountName=myLdapUSer,dc=mycompany,dc=com -W \
 -b dc=mycompany,dc=com -H ldap://10.10.10.11
    
por 24.04.2012 / 11:28
2

Devido a minhas experiências com o "LDAP" do Active Directory (e uso o termo livremente), pode ser um problema de referências.

Por padrão, quando você se conecta à porta 389 em um controlador de diretório, além das respostas regulares do LDAP, você obtém de uma referência para "directory.ads.example.com". A maioria dos clientes LDAP (incluindo o Apache) segue as referências e, se você tiver muitos DCs, especialmente se estiverem geograficamente distribuídos, o cliente LDAP poderá ser enviado para a rede. Certa vez, tive um cliente LDAP em Montreal, no Canadá, indo regularmente a um de nossos CDs em Sydney, na Austrália.

Portanto, em vez de ter algo como o seguinte na sua configuração do Apache:

AuthLDAPURL ldap://mydc1.example.com/dc=example,dc=com?uid?one

que irá para a porta 389, certifique-se sempre de especificar a porta do Catálogo Global:

AuthLDAPURL ldap://mydc1.example.com:3268/dc=example,dc=com?uid?one

Se você precisa de SSL, então é a porta 3269. (Realmente gostaria que a MS não ligasse para o serviço LDAP, pois não é de muitas maneiras, e isso causa confusão.)

P.S. No futuro, crie o hábito de postar as partes relevantes do (s) seu (s) arquivo (s) de configuração (fique à vontade para ofuscar nomes de usuários, senhas e / ou domínios).

    
por 01.05.2012 / 04:20
2

Parece algo errado com o DNS. 30 segundos podem ser o tempo limite em alguma consulta DNS no lado do servidor Apache ou LDAP. Eu verificaria isso!

    
por 04.05.2012 / 08:45
0

Eu faria um pacote farejar na rede para ver onde o atraso está ocorrendo. Ele deve mostrar se está demorando muito para uma resposta do DNS voltar ou se a resposta LDAP está lenta ou se há algum outro atraso que você não antecipou, como uma referência LDAP, como o DAM sugere.

    
por 01.05.2012 / 05:17