Integração LDAP do Apache httpd

1

Estou configurando uma integração do CollabNet Subversion. Eu tenho o seguinte arquivo collabnet_subversion.conf :

<Location /svn>
  DAV svn
  SVNParentPath /mnt/svn/new_repos
  SVNListParentPath on
  AuthName "VegiBanc Source Repository"
  AuthType basic
  AuthzLDAPAuthoritative off
  AuthBasicProvider ldap
  AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName" NONE
  AuthLDAPBindDN "CN=SVN-Admin,OU=Service Accounts,OU=VegiBanc Users,OU=vegibanc,DC=vegibanc,DC=com"
  AuthLDAPBindPassword "swordfish"
</Location>

Isso funciona muito bem. Qualquer usuário em nosso Active Directory pode acessar nosso repositório Subversion.

Agora, quero limitar isso apenas a pessoas do grupo do Active Directory Desenvolvimento :

<Location /svn>
  DAV svn
  SVNParentPath /mnt/svn/new_repos
  SVNListParentPath on
  AuthName "VegiBanc Source Repository"
  AuthType basic
  AuthzLDAPAuthoritative off
  AuthBasicProvider ldap
  AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName" NONE
  AuthLDAPBindDN "CN=SVN-Admin,OU=Service Accounts,OU=VegiBanc Users,OU=VegiBanc,DC=vegibanc,DC=com"
  AuthLDAPBindPassword "swordfish"
  Require ldap-group CN=Development, OU=Security Groups, OU=VegiBanc, dc=vegibanc, dc=com
</Location>

Eu adicionei Require ldap-group , mas agora ninguém pode fazer login. Eu tenho LogLevel definido como debug , mas tudo que consigo é isso em error_log (linha única dividida para facilitar a leitura):

[Thu Oct 11 13:09:28 2012] [info] [client 10.55.9.45] [6752] 
    vauth_ldap authenticate: user dweintraub authentication failed;
    URI /svn/ [ldap_search_ext_s() for user failed][Bad search filter]

E eu recebo isso no meu access_log :

10.55.9.45 - - [11/Oct/2012:13:09:27 -0500] "GET /svn/ HTTP/1.1" 401 401
10.55.9.45 - dweintraub [11/Oct/2012:13:09:28 -0500] "GET /svn/ HTTP/1.1" 500 535

Sim, estou nesse grupo. (Ou, pelo menos, como posso confirmar isso só para ter certeza de que não é o problema. Eu tenho o SysinternalsSuite ADExplorer. É onde eu estou recebendo todas as minhas informações.)

    
por David W. 11.10.2012 / 20:37

2 respostas

1

Você não especificou o DN do grupo corretamente e pode ver a mensagem de erro. Provavelmente deve ser assim:

Require ldap-group CN=Development,OU=Security Groups,OU=VegiBanc,dc=vegibanc,dc=com

Editar : como esse não parece ser o problema, verifique se você tem

AuthLDAPGroupAttribute member uniquemember
AuthLDAPGroupAttributeIsDN on

set, o que eu suponho ser correto para o seu ambiente de AD. Esses são os padrões em mod_authnz_ldap , mas só podem ajudar a defini-los explicitamente.

Eu realmente não tenho outras ideias, sua configuração parece correta. Só estou me perguntando por que você não tinha a diretiva Require em sua configuração original. Mas você disse que estava funcionando, então talvez o padrão seja Require valid-user .

Editar 2: Como estamos executando uma configuração bastante semelhante (mas não com o AD), eu analisei nossa configuração e descobri que não é possível usar Require ldap-group junto com os recursos de autorização do Subversion. Isso está documentado aqui: link . No nosso caso, isso não foi um problema, pois usamos AuthzSVNAccessFile para autorização. O Require ldap-group parece ter simplesmente se comportado como Require valid-user .

Isso realmente não me explica por que você recebe uma mensagem de "Filtro de pesquisa inválido", mas para permitir que apenas membros do grupo de desenvolvimento acessem o /svn local, você deve estender o AuthLDAPURL com um grupo filtrar e remover a diretiva Require ldap-group . Como você está usando o AD, você pode usar memberOf ao longo destas linhas:

AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName?sub?(&(objectCategory=person)(memberOf=CN=Development,OU=Security Groups,OU=VegiBanc,dc=vegibanc,dc=com)) NONE

Mais detalhes aqui:

link

link

    
por 11.10.2012 / 22:39
1

Estou dando isso para daff de qualquer maneira, porque os links dele me levam à questão real. Eu não consegui fazer a filtragem funcionar como o daff sugeriu, mas achei o problema.

A declaração que me levou à solução foi:

Since we are running a quite similar setup (but not with AD), I reviewed our configuration and found that one can't use Require ldap-group along with Subversion's authorization features.

Vários links daff sugeridos comentaram sobre isso e não ofereceram nenhuma solução, exceto para usar filtragem que eu não conseguia trabalhar.

Decidi então analisar o http.conf que a Collabnet forneceu. E aqui está o que eu vi:

#LoadModule python_module      opt/CollabNet_Subversion/modules/mod_python.so
LoadModule dav_svn_module     opt/CollabNet_Subversion/modules/mod_dav_svn.so
LoadModule authz_svn_module   opt/CollabNet_Subversion/modules/mod_authz_svn.so
#LoadModule dontdothat_module  opt/CollabNet_Subversion/modules/mod_dontdothat.so

Ah! Eles estão carregando authz_svn_module ! Eu simplesmente desativei:

#LoadModule python_module      opt/CollabNet_Subversion/modules/mod_python.so
LoadModule dav_svn_module     opt/CollabNet_Subversion/modules/mod_dav_svn.so
#LoadModule authz_svn_module   opt/CollabNet_Subversion/modules/mod_authz_svn.so
#LoadModule dontdothat_module  opt/CollabNet_Subversion/modules/mod_dontdothat.so

Em seguida, voltamos para minha configuração

por 12.10.2012 / 16:39