Mise en place et Utilisation de auf-django-users : Mon expérience

Mon infrastructure

                   serveur-sl ----------+-------[Rx Salle accès]
(nfs, msyql-server, firewall)           |
                                        |
                     cache-sl ----------+
(auf-django, apache, mysql-client)

Adaptation de la BD mysql

Utilisant déjà mysql pour l'authentification [1], il suffit d'adapter la BD "authnss" pour l'utilisation de auf-django-users

// Ajout de la colonne source : Les utilisateurs locaux auront LOCAL comme source
// L'appli ne gèrera que les comptes locaux
mysql> ALTER TABLE users CHANGE COLUMN id_noyau  source varchar(15) DEFAULT 'LOCAL' NOT NULL; 
mysql> UPDATE users SET source = 'LOCAL' WHERE source = -1;
mysql> UPDATE users SET source = 'AUF' WHERE source = -2;
mysql> UPDATE users SET source = 'AUTRE' WHERE source <> 'AUF' AND source <> 'LOCAL';

// Ajout d'une date de création
mysql> ALTER TABLE users ADD COLUMN creation datetime DEFAULT "1970/01/01" NOT NULL ; 

// Ajout d'une date de modification
mysql> ALTER TABLE users ADD COLUMN modification datetime DEFAULT "1970/01/01"; 

// Préparation à la suppression de la clé primaire uid
mysql>  ALTER TABLE users MODIFY uid int(11) NOT NULL UNIQUE;

// On remplit les champs de création et de modification à partir de maintenant pour tous les comptes (un point de départ)
mysql> UPDATE users SET creation = now() , modification = now() WHERE uid <> 'quelquechose'; 

// gid est un entier int10
mysql> ALTER TABLE users MODIFY COLUMN gid int(10) NOT NULL DEFAULT 10000; 

// gid à 10000 pour tout le monde : un groupe users sera créé par la suite avec gid 10000
mysql> UPDATE USERS SET gid = 10000 WHERE gid <> 10000 ; 

// Création du groupe users gid 10000
mysql> INSERT INTO groups VALUES ('users','x','10000');

// Changement du champ rowid en id : on utilise plutôt id dans auf-django-users
mysql> ALTER TABLE grouplist CHANGE rowid id int(10) auto_increment ; 

// Changement de clé primaire : username devient la clé
mysql>  ALTER TABLE users DROP PRIMARY KEY, ADD PRIMARY KEY(username);

// On augmente la taille de username dans grouplist
mysql>  ALTER TABLE grouplist MODIFY username varchar(128) NOT NULL; 

Création de l'utilisateur qui accèdera à la base de données

mysql> GRANT ALL ON authnss.* TO auf-django@cache-sl IDENTIFIED BY "le-mot-de-passe";

Sur le Firewall

Autoriser la connexion mysql sur serveur-sl :

# mysql
iptables -A INPUT -i $IFDMZ -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j REJECT

Coté Serveur Web

Installation et Configuration

Installation des paquets

Vérifier que vous avez dans /etc/apt/sources.list, le dépôt AUF pour votre debian :

deb http://apt.auf.org lenny auf

On installe les paquets qu'il faut :

$ sudo aptitude install auf-django-users libapache2-mod-wsgi

Accès à la base de données

Renseigner dans le fichier suivant les paramètres de connexion :

$ sudo vi /etc/auf-django-users/conf.py

DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'authnss'
DATABASE_USER = 'auf-django'
DATABASE_PASSWORD = 'le-mot-de-passe'
DATABASE_HOST = 'serveur-sl'

Fin de l'installation

Pour terminer l'installation :

$ sudo auf-django-users-manage.py syncdb

Répondre aux questions. Pour finir, ajouter dans un des virtualhost de votre serveur apache la ligne suivante :

$ sudo vi /etc/apache2/sites-available/default
Include /etc/auf-django-users/apache.conf 

Redemarer apache2 avec :

$ sudo apache2ctl graceful

Ce qui marche pas ou pas encore!

Documentation existante sur le Wiki