luni, 6 aprilie 2009

Configurare subversion + apache2 + ldap

In acest post, descriu cum se poate crea autentificarea pentru un repo de subversion utilizand mod_dav_svn si ldap. Inainte de a descrie in detaliu toti pasii voi presupune ca avem un repo virtual creat cu path-ul: /svn/repos/repo_virtual.

Pe parte de ldap, vom presupune ca avem urmatoarea structura:

dc=example,dc=com
ou=Groups,dc=example,dc=com
cn=group_svn_repo,ou=Groups,dc=example,dc=com
ou=Users,dc=example,dc=com
cn=user1,ou=Users,dc=example,dc=com
cn=user2,ou=Users,dc=example,dc=com

In mod normal asta e tot ce aveti nevoie inainte de configurare apache. Pe scurt, logica este sa facem autentificare pe nodul de users dupa care verificam daca utilizatorul este in grupul specificat. Aici se va descrie configurarea in virtual host, intrucat este cea mai raspandita.


ServerName svn1.example.com
ServerAdmin rcosnita@example.com
ErrorLog /var/log/apache2/error_svn.log
CustomLog /var/log/apache2/access_svn.log combined


DAV svn
SVNPath /svn/repos/repo_virtual/
SVNListParentPath on

AuthBasicProvider ldap

AuthType Basic
AuthName "Example server"
AuthzLDAPAuthoritative off

AuthLDAPURL ldap://svn1.example.com:389/OU=Users,DC=informatix,DC=ro?cn?sub
AuthLDAPBindDN CN=root,DC=example,DC=com
AuthLDAPBindPassword parolamea

AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN on

Require group cn=group_svn_repo,ou=Groups,dc=informatix,dc=ro



Asta e tot ce trebuie sa faceti. Dupa ce ati terminat dati un restart la serverul de apache si totul ar trebui sa functioneze.

Este important sa tineti minte ca serverul apache face cache in momentul in care se conecteaza la ldap. Asta inseamna ca orice intrare care se adauga in ldap dupa ce apache este conectat nu va fi vazuta pana la restart-ul unuia dintre servere.

Dintr-un motiv care inca mi-e neclar, cand am folosit apache + openldap solutia de mai sus nu a functionat. Din acest motiv, am "trisat" si am adaugat fiecarui utilizator un atribut din schema ldap care sa semnifice grupul. In cazul meu acest atribut a fost labeledURI.

Dupa aceasta am inlocuit: Require group cn=group_svn_repo,ou=Groups,dc=informatix,dc=ro
cu: Require ldap-attribute labeledURI=cn=group_svn_repo,ou=Groups,dc=informatix,dc=ro.

Dupa aceasta modificare totul a functionat fara probleme.

Sper sa gasiti acest post interesant.
Cosnita Radu Viorel!

Niciun comentariu:

Trimiteți un comentariu