SVN authentification LDAP

De EjnTricks

La gestion des comptes sur un serveur SVN ne permet pas de valider les connexion sur un annuaire LDAP, et se base sur le fichier de configuration interne. Cependant, l'exposition de SVN sous Apache permet de bénéficier du module d'authentification sur un annuaire LDAP, voir Module Apache LDAP. Ce module, après validation du compte, va transmettre le nom de l'utilisateur au serveur SVN.

Il est donc nécessaire de modifier les configurations:

  • Exposition de SVN sous Apache, voir SVN sous Apache.
  • Les autorisations d'accès.

Trois sites ont été consultés pour mettre en place la configuration:

Dans ces exemples, l'accès à l'annuaire est configuré avec un login / mot de passe. Or l'installation réalisé dans le cadre de cette étude, cf OpenLDAP Installation, ne nécessite pas ce type de configuration.

Hand-icon.png Votre avis

Current user rating: 52/100 (7 votes)

 You need to enable JavaScript to vote


Icon-Configuration-Settings.png Configuration

Configuration-icon.png Configuration Apache

La mise en place de l'authentification LDAP est détaillé dans l'article Module Apache LDAP. Ce type de configuration s'effectue dans la configuration du module SVN, soit le fichier dav_svn.conf.

Lock-icon.png Droits d'accès

Après la mise en place de la configuration Apache, il est utile de modifier les droits d'accès au repository en fonction du compte utilisateur. Restriction Accès

Examples-icon.png Exemple

Cet exemple permet de donner un accès aux comptes LDAP déclarés sous l'OU ou=people,dc=ejnserver,dc=fr. Seul le compte etienne aura un accès en écriture sur les fichiers, tous les autres auront un accès en écriture, mais nécessitant tout de même une authentification.

Configuration-icon.png Configuration Apache

Le fichier /etc/apache2/mods-enabled/dav_svn.conf, ou la déclaration des sites, sont modifiés en ajoutant la configuration suivante:

<location /svn/study>
  DAV svn
  SVNPath /var/opt/svn/study
  SVNAutoversioning on
  AuthzSVNAccessFile /var/opt/svn/study/conf/authz

  AuthType Basic
  AuthName "Study Repository"
  AuthBasicProvider ldap
  AuthLDAPURL ldap://localhost:389/ou=people,dc=ejnserver,dc=fr?uid
  require valid-user
</location>

La configuration de AuthzSVNAccessFile permet de spécifier l'emplacement du fichier contenant les droits d'accès aux fichiers.

Lock-icon.png Droits d'accès

Afin de définir les droits d'accès, le fichier /var/opt/svn/study/conf/authz est modifié afin de spécifier les droits pour le compte etienne et pour tous les autres:

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
###  - a single user,
###  - a group of users defined in a special [groups] section,
###  - an alias defined in a special [aliases] section,
###  - all authenticated users, using the '$authenticated' token,
###  - only anonymous users, using the '$anonymous' token,
###  - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

[/]
etienne = rw
* =