A autenticação LDAP falha com 500 ou 401, dependendo da ligação do Apache2

3

Estou configurando a autenticação LDAP para o nosso repositório Subversion hospedado por meio do Apache em um sistema RHEL 5. Eu me deparo com dois problemas diferentes quando tento autenticar no Active Directory.

<Location /svn/>
Dav svn
SvnParentPath /srv/subversion
SVNListParentPath On
AuthType Basic
AuthName "Subversion Repository"

AuthBasicProvider ldap

AuthLDAPBindDN "cn=userfoo,ou=Service Accounts,ou=User Accounts,dc=my,dc=example,dc=com"
AuthLDAPBindPassword "mypass"

AuthLDAPUrl "ldap://my.example.com:389/ou=User Accounts,dc=my,dc=example,dc=com?sAMAccountName?sub?(objectClass=user)" NONE

Require valid-user
</Location>

Se eu usar a configuração acima, ela me avisará continuamente com o prompt Básico e, eventualmente, selecionarei Cancelar, que retorna um 401 (Autorização Obrigatória). Se eu comentar as partes de ligação, ele retorna 500 (Internal Server Error), reclamando que a autenticação falhou:

[Mon Nov 02 12:00:00 2009] [warn] [client x.x.x.x] [10744] auth_ldap authenticate: user myuser authentication failed; URI /svn [ldap_search_ext_s() for user failed][Operations error]

Quando executo a ligação usando ldapsearch e filtro para um atributo simples, ele retorna corretamente:

ldapsearch -h my.example.com -p 389 -D "cn=userfoo,ou=Service Accounts,ou=User Accounts,dc=my,dc=example,dc=com" -b "ou=User Accounts,dc=my,dc=example,dc=com" -w - "&(objectClass=user)(cn=myuser)" sAMAccountName

Infelizmente, não tenho controle ou insight sobre a parte AD do sistema, apenas o servidor RHEL. Alguém sabe o que o desligamento está aqui?

    
por Erik 03.11.2009 / 02:03

5 respostas

0

Acontece que eu estava quase lá. Eu simplesmente perdi a diretiva AuthzLDAPAuthoritative off , que é específica da minha instância.

Como nota adicional, também queríamos limitar o repo a apenas usuários identificados, de forma que também encadeamos a autenticação com um arquivo. Exemplo abaixo:

RedirectMatch ^(/repos)$ $1/
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos/>
    DAV svn
    SVNParentPath /var/svn/repos
    SVNListParentPath On
    SVNAutoversioning On

    AuthType Basic
    AuthName "Subversion Repository"

    AuthBasicProvider file ldap
    AuthzLDAPAuthoritative off
    AuthLDAPBindDN "OU=Service Accounts,OU=User Accounts,DC=example,DC=com"
    AuthLDAPBindPassword xXxXxXx
    AuthLDAPUrl "ldap://ldap.example.com:389/OU=User Accounts,DC=example,DC=com?sAMAccountName?sub?(objectClass=user)"

    AuthzSVNAccessFile /etc/svn-authn
    SVNIndexXSLT "/styles/svnindexICore.xsl"
    AuthUserFile /etc/svn-auth-file 

    #AuthBasicProvider file ldap
    Require valid-user
</Location>
    
por 16.11.2012 / 19:14
1

Eu tive o mesmo problema. A configuração idêntica que testei no Ubuntu não funcionou no RHEL5. Acabei mudando da porta 389 para 3268 depois de ler isso e que resolvi meu problema.

    
por 23.01.2012 / 09:02
1

Comparando sua configuração com uma configuração ativa com o Active Directory no Apache 2.2.3, as únicas diferenças que vejo são:

  • Estou usando o nome de usuário do estilo "DOMAIN \ sAMAccountName" para meu AuthLDAPBindDN
  • Eu não tenho NONE depois do meu AuthLDAPURL

Além dessas sugestões, recomendo que você execute tcpdump na conversa entre o Apache e o Active Directory para ver o que pode estar acontecendo lá também.

    
por 23.02.2012 / 00:03
0

Eu não sei sobre o LDAP, já que usei o SSPI auth para minha configuração. Mas eu encontrei essas páginas com bons detalhes sobre a configuração do LDAP. (Apenas no caso de você ainda não ter chegado a eles):

link

link

A versão do apache parece fazer diferença na sintaxe.

Além disso, a ordem na qual os módulos LDAP são carregados.

    
por 03.11.2009 / 09:58
0

Seu LDAPUrl faz o apache criar uma consulta: &(objectClass=user)(sAMAccountName=myuser)

E sua consulta na linha de comando é: &(objectClass=user)(cn=myuser)

Qual deles está correto? Se você disser que seu teste de linha de comando funciona bem, provavelmente precisará:

AuthLDAPUrl "ldap://my.example.com:389/ou=User Accounts,dc=my,dc=example,dc=com?cn?sub?(objectClass=user)" NONE

    
por 20.12.2009 / 13:57