Autenticação Básica do Subversion usando Apache 2


O Apache 2, além de funcionar como servidor do repositório, fornece vários serviços complementares ao Subversion, tais como compressão de dados, criptografia e autenticação. Este artigo vai falar um pouco a respeito de como configurar a autenticação do Subversion usando a autenticação básica do Apache 2.

Conforme consta na wikipedia, autenticação “… é um processo que busca verificar a identidade digital do usuário de um sistema, normalmente, no momento em que ele requisita um log in (acesso) em um programa ou computador”. O modo mais comum de autenticação envolve um nome de usuário (username) e senha (password).

Como funciona o processo de autenticação do Apache?

O processo de autenticação segue a seguinte seqüência:

  1. O cliente faz uma requisição
  2. O Apache identifica que a requisição é sobre um recurso protegido por uma autenticação básica e envia como resposta um header de código 401 Authentication Required indicando que o cliente deve fornecer as credenciais do usuário
  3. O cliente (por exemplo, o firefox) pede ao usuário para fornecer o nome do usuário e a senha e repassa para o Servidor;
  4. O Apache verifica se o nome fornecido de usuário está numa lista pré-aprovada e se a senha correspondente está correta, e só então libera o recurso requisitado.

Criando um Recurso Protegido por Autenticação Básica

O primeiro passo para exigir uma identificação é inserir na seção Location de acesso aos repositórios do Subversion a sub-seção que exige a autenticação básica:

<Location /svn>
        DAV svn
        SVNParentPath /srv/svn

        # sub-seção referente à autenticação
        AuthType Basic
        AuthName "Repositórios do Subversion"
        AuthUserFile /srv/svn/autenticacao
        Require valid-user
</Location>

Esta configuração do jeito que está permitirá o acesso à leitura e escrita a todos os usuários autenticados a todos os repositórios localizados a partir do diretório /srv/svn. Falta agora fornecer o arquivo de autenticação /srv/svn/autenticacao.

O arquivo de autenticação contém uma relação de nomes de usuários e senhas. Na verdade, não são as senhas que são armazenadas, e sim o hash da senha. Isso torna o arquivo mais seguro pois o processo de hash é unidirecional e impossibilita descobrir o conteúdo original a partir do código gerado.

A verificação é feita usando a senha fornecida para gerar o hash novamente. Caso o hash seja o mesmo que o registrado, então a senha está correta.

O Próprio Usuário Gerando Seu Login e Senha

Para gerar e manter um arquivo com nomes de usuários e suas respectivas senhas criptografadas, utiliza-se o comando htpasswd. O nome do usuário e a senha são passados como parâmetros pela linha de comando ou digitados quando a execução do comando solicita. O inconveniente é que o usuário ou não pode escolher seu login e senha ou precisa estar presente para fornecer a senha desejada. Se o desenvolvedor está em São Paulo e a equipe de suporte está no Rio de Janeiro, por exemplo, a situação fica mais complicada ainda.

Minha sugestão é usar um jeito que o próprio desenvolvedor possa enviar ao pessoal do suporte o login e a senha que deseja. Para isso, deve:

  1. Visitar o site: http://aspirine.org/htpasswd_en.html
  2. Criar a senha desejada senha;
  3. Copiar e mandar palavra criptografada ao encarregado de adicionar a linha ao arquivo de autorização lá no servidor.

Pronto! Simples e prático!

Considerações Finais

A autenticação básica funciona muito bem para empresas com um número pequeno de desenvolvedores pois é fácil e rápido de configurar e resolve bem o problema, sem dores de cabeça para o pessoal do suporte técnico.

Só a autenticação não é tudo. Ainda falta configurar a parte de autorização, mas isso fica pra outra oportunidade…

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

Simples e bem objetivo. Excelente artigo. Falta só o link para a configuração de autorização… :)

Abrax