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!
Avec admincomptes il y avait une synchro automatique avec la table messagerie pour l'authentification des utilisateurs de la messagerie @sl.refer.sn, insertion des nouveaux utilisateurs dans la liste de diffusion mailman abonnes