Apache autentica o grupo de subdiretórios correspondentes

1

Eu tenho um cenário único aqui - um que provavelmente surgiu no passado. Eu tenho um diretório que está sendo protegido por uma autenticação LDAP no meu servidor Apache. Neste diretório (chamá-lo / svn - sim, é um diretório subversion), existem projetos como subdiretórios.

Eu quero restringir os usuários que obtêm acesso a esse subdiretório com base em um arquivo de grupo. No entanto, não quero adicionar uma linha especial no meu arquivo httpd.conf para cada projeto criado. Em vez disso, o URL do subdiretório corresponderá ao nome do grupo.

Por exemplo, posso ter o projeto "calendário". Meu URL do SVN seria " link " - e os únicos usuários que deveriam ter acesso a esse repositório seriam listados em meu groups.txt arquivo como:

calendar:user1 user2

Assim, mesmo que alguém possa autenticar no LDAP, apenas user1 e user2 devem ser permitidos.

Existe uma maneira mais fácil de fazer isso? Talvez configure uma variável para o subdiretório e diga Require ldap-group variable ?

Obrigado!

    
por nuclearpenguin 10.10.2011 / 17:52

1 resposta

1

Depois de mais investigações, encontrei a solução na forma de controle de acesso ao SVN.

Usando authz_svn_module , meu diretório do Subversion na configuração do Apache se parece com:

<Location /svn>
  # Tell apache this is a subversion repository
  DAV svn
  # Where the subversion repository list exists on the file system
  SVNParentPath "/var/svn"
  # What kind of authentication     
  AuthType Basic
  AuthName "Restricted!"
  AuthBasicProvider ldap
  AuthLDAPBindDN "YOUR BIND DN"
  AuthLDAPBindPassword "YOUR BIND PASSWORD"
  AuthLDAPURL "ldaps://yourldapserver.com:636/other_info"
  AuthzSVNAccessFile /etc/httpd/svnaccess.txt
  Require valid-user
</Location>

Bastante básico - a linha importante aqui é a AuthzSVNAccessFile - isso aponta para o arquivo que será gerado automaticamente e para quais usuários têm permissão para quais diretórios.

Este arquivo "svnaccess.txt" seria parecido com isto:

[project1:/]
joe_user = rw
mary_beth = rw
$anonymous = r

[project2:/]
james_smith = rw

[project3:/]
john_deere = rw
$anonymous = r

Os nomes de usuários listados aqui são os nomes de usuários autenticados pelo LDAP. Eles não precisam ser registrados pelo Subversion (eles são carregados com o usuário na autenticação). O @anonymous é um curinga: qualquer pessoa que não esteja autenticada, ou que possa satisfazer outra diretiva Allow na sua configuração do Apache. Este arquivo só deve ser legível por root (ou quem inicia o serviço Apache).

A criação deste arquivo pode ser gerada automaticamente - dependendo de onde sua informação está vindo. No meu caso, eu tenho um servidor Redmine que contém informações sobre usuários e projetos, e qual usuário tem acesso a qual projeto. Um pequeno script Python pode ser escrito para extrair essas informações do banco de dados e usado para gerar esse arquivo automaticamente (se usado como uma tarefa cron). É uma maneira prática de fazer as coisas, mas depois de trabalhar e automatizar, você não precisa se preocupar em reescrever novamente as regras de autenticação para cada novo repositório de projeto / subversão criado.

(E no lado positivo, as alterações neste arquivo "svnaccess.txt" não requerem uma reinicialização do Apache!)

    
por 11.10.2011 / 15:30