Configurando Subversion e autenticando no AD


Configurando Subversion e autenticando no AD

by Rafaelgomes on 25-09-2009

Para quem não conhece, Subversion é um famoso serviço de controle de versão.
Será descrito aqui os passos para utilizar o subversion como controle de versão, com autenticação por grupos no Active Directory.
Os repositórios podem ser visualizados tanto via console svn ou via navegador,  ou seja, o Apache precisará também ser configurado.
A distribuição utilizada foi Debian 5 (lenny)
Vamos primeiro a instalação dos pacotes necessários:
# aptitude install subversion apache2 libapache2-svn libapache-authznetldap-perl openssl
Vamos iniciar os módulos:
# a2enmod dav_svn
# a2enmod authnz_ldap
# a2enmod ssl
Vamos primeiro a configuração do Apache
Crie um site novo:
# vi /etc/apache2/sites-available/svn
Dentro desse arquivo preencha com o seguinte dado (altere de acordo com seu ambiente):
NameVirtualHost 192.168.1.1:80

ServerName techfree.com.br  www.techfree.com.br
Redirect / https://techfree.com.br/

ServerName techfree.com.br
DAV svn
SVNPath /var/svn/repos
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
# Abaixo está o caminho para consulta, crie uma UO para SVN, afim de organizar o ambiente
AuthLDAPURL ldap://servidorad.techfree.br:389/ou=svn,dc=techfree,dc=com,dc=br?sAMAccountName?sub? (objectCategory=person)
# Esse usuário abaixo precisa existir no AD
AuthLDAPBindDN cn=bind,ou=Login_Anonimous,dc=techfree,dc=com,dc=br
# Essa é sua senha
AuthLDAPBindPassword hackme
#AuthLDAPGroupAttributeIsDN off
AuthType Basic
AuthName “Meu Subversion”

Require ldap-group cn=grupo,ou=svn,dc=techfree,dc=com,dc=br
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/techfree.pem
Nesse caso já existe um certificado válido, mas se você não tem, não se preocupe. Siga esse manual e crie seu próprio certificado.
Veja que o certificado criado somente manterá a criptografia dos dados, ele não será reconhecido como válido automaticamente, pois é auto-assinado. Sendo assim será necessário aceitar o mesmo quando for utilizar.
Agora com seu apache configurado, reinicie o mesmo para verificar se toda configuração foi carregada com sucesso.
# /etc/init.d/apache restart
Vamos agora criar o repositório
Como citado no arquivo do apache, ele deve ser criado em /var/svn/repos, porém para evitar termos um link do tipo techfree.com.br/var/svn/repos eu criei um link simbólico na raiz com nome svn para /var/svn. Eu sei que com isso vai surgir logo a pergunta; “por que não utilizou o Alias do apache?” Eu usei, mas por algum motivo o SVN não é muito fã disso e apresentou problemas para sessão autenticada.
A criação pode ser feita com o comando abaixo:
# cd /var/svn
# svnadmin create repos
Vamos a configuração do repositório recém criado, acesso o arquivo /var/svn/repos/conf/svnserve.conf
Basicamente ele deve ter o conteúdo abaixo:
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = Repositorio Moodle
[auth]
# Quando você se autentica pelo próprio servidor do svn, ele cria
# automaticamente (opção default) um arquivo texto em seu home com
# o nome do seu usuário e sua senha, para que a cada vez que você
# modifique algo não tenha que digitar sua senha novamente. Por ser uma
# ação sem segurança, deixei a opção de guardar senha desligada.
store-auth-creds = no
Com essa configuração o repositório estará disponível para leitura por qualquer um e de escrita somente para usuários autenticados (Que serão os usuários autenticados pelo Apache no Active Directory).
Agora é somente iniciar a utilização de seu Subversion.

Comentários