Mutualisation des comptes refer
- Objectif : un abonné au CNF de xyz avec un login abc doit pouvoir se logguer dans n'importe quel autre CNF d'afrique de l'ouest avec le login abc@xyz et le même mot de passe
Listes des CNF où c'est actuellement fonctionnel
- ..
Questions à résoudre
Création automatique du homedir : géré via pam_exec (cf. Etude/PaquetAufDesktop) : OK
- Diffusion des infos d'authentification : généraliser le bricolage de Bamako, Badaladougou-Ensup
- Adhésion au principe de la part des responsables de CNF : Ok
- Interfaçage "guia"
- intégrer les comptes @auf.org comme un cas particulier d'un système plus général
Système de diffusion des comptes
- Pour le moment, via admincomptes : à insérer dans le système de synchro passwd/mysql
- chaque modification de compte == une entrée dans une table "à diffuser" locale, avec id incrémenté
- via cron :
copie de l'entrée à diffuser vers une table "centrale" (mysql sur openvpn) vers un site central : id "central" incrementé, puis suppresion locale aprés copie confirmée : ok, cf. pwd2synchro
- actions
- '+' : ajout ou modif' d'un compte
- '-' : destruction d'un compte
- 'X' : demande de destruction de tous les comptes associé à ce site
- actions
importation des données de la base de donnée centrale, avec stockage de l'id du dernier enregistrement correctement transferé : ok, synchroniser-nss
- voir la possibilité de faire une demande à un site distant de renvoyer les infos pour un compte en particulier
l'allocation des uid se fait sur chaque site, mais > 20000 pour éviter les collisions avec les uid "passwd"
le choix du homedir se fait localement, dans la conf, une variable homedir_format du genre /home/EXTERNES/:DOMAIN:-:LOGIN:
- reste à faire : un serveur openvpn dédié entre les divers sites et la base mysql centrale
installation
- aptitude install auf-synchro-auth sur le serveur gérant les comptes
nettoyage
- eviter d'avoir des info non pertinentes s'accumuler dans le spool central :
- les informations masquées par des infos plus réçentes
select duh.id from (select max(id) as mid ,username from spool_synchro group by username) as gnu, spool_synchro as duh where duh.username = gnu.username and duh.id <gnu.mid
- les ajouts correspondant à des comptes expirés
- tout ce qui est antierieur à un flush sur un site particulier
select duh.id,duh.username from (select id,username from spool_synchro where action='X') as gnu,spool_synchro as duh where duh.id < gnu.id and duh.username like gnu.username;