LDAP et Egroupware

Egroupware est un serveur Groupware ou Collecticiel. Il possède plusieurs applications comme un Webmail, un système de calendrier partagé, un carnet d'adresses partagées, etc..Logo EGW

Pour ce tutoriel, nous allons partir du principe que nous disposons d'un méta annuaire primaire qui ne doit pas être administré par Egroupware. C'est pourquoi nous allons détailler la procédure pour créer un méta annuaire de test (l'annuaire Primaire) et un annuaire secondaire dédié à Egroupware. Egroupware a besoin d'un serveur LDAP pour gérer l'authentification et obtenir la liste de tous les contacts.

Pour nos tests : Le premier serveur LDAP sera un annuaire primaire avec deux bases. Le deuxième annuaire sera un annuaire secondaire avec une réplication automatique des bases du LDAP primaire et une base en plus pour gérer les groupes de Egroupware. Nous allons utiliser deux machines virtuelles.......

Création de l'annuaire primaire

Installation :

apt-get install slapd phpldapadmin ldap-utils db4.2-util

(Phpldapadmin va nous permettre de rajouter les branches que l'on veut de façon plus convivial)

Configuration :

Editez le fichier /etc/ldap/slapd.conf :

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.
#######################################################################
# Global Directives:
# Features to permit
#allow bind_v2
# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid
# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args
# Read slapd.conf(5) for possible values
# niveau de log : voir /var/log/syslog
loglevel        256
# Where the dynamically loaded modules are stored
modulepath	/usr/lib/ldap
moduleload	back_bdb
# The maximum number of entries that is returned for a search operation
sizelimit 500
# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1
# notre fichier de règles 
include /etc/ldap/acl.conf
backend        bdb
checkpoint 512 30
# nous définissons à présent nos deux bases :
#######################################################################
database       bdb
suffix          "o=isere,dc=meta,c=fr"
directory       "/var/lib/ldap/isere"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
# ici on met les index : ne pas oublier de réindexer : su openldap slapindex
index           objectClass eq
index           uid,sn,cn,gidNumber,uidNumber,memberUid eq
# ici fichier répertorier le mise à jour à effectuer
replogfile    /var/lib/ldap/isere/replog/slurpd.log
# ici on met l'utilisateur "root", cependant il ne sera pas présent physiquement dans la base
rootdn "cn=manager,o=isere,dc=meta,c=fr"
rootpw password
# ici on ajoute les données d'envoi vers le serveur secondaire pour la réplication
replica uri=ldap://172.16.140.169
	suffix=ou=People,ou=company,o=isere,dc=meta,c=fr
# ici le compte réplicateur va permettre de répliquer la base
	binddn=cn=replicateur,o=isere,dc=meta,c=fr
       bindmethod=simple
# ici mot de passe en clair
       credentials=password 
######################################################################## 
# on fait de même pour l'autre base
######################################################################## 
database       bdb
suffix          "o=mont-blanc,dc=meta,c=fr"
directory       "/var/lib/ldap/mont-blanc"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index           objectClass eq
index           uid,sn,cn,gidNumber,uidNumber,memberUid eq
# ici fichier répertorier le mise à jour à effectuer
replogfile    /var/lib/ldap/mont-blanc/replog/slurpd.log 
rootdn "cn=manager,o=mont-blanc,dc=meta,c=fr"
rootpw password
replica uri=ldap://172.16.140.169
     binddn=cn=replicateur,o=mont-blanc,dc=meta,c=fr
     bindmethod=simple
     credentials=password
########################################################################

Ensuite dans /var/lib/ldap, il faut créer les dossiers pour chaque base de données :

mkdir /var/lib/ldap/isere/replog/ /var/lib/ldap/mont-blanc/replog
chown -R openldap /var/lib/ldap

Réindexation :

su openldap slapindex

Maintenant on règle les acl dans le fichier acl.conf On crée d'abord ce fichier :

vi acl.conf

Et on l'édite en fonction de nos besoins :

access to attrs=userPassword,shadowLastChange
        by dn="cn=replicateur,o=isere,dc=meta,c=fr" write
        by dn="cn=replicateur,o=mont-blanc,dc=meta,c=fr" write
        by anonymous auth
        by self write
        by * none 
# dn.subtree : accédez à la base elle-même et récursivement à tout sont contenu
access to dn.subtree="o=isere,dc=meta,c=fr"
        by dn="cn=replicateur,o=isere,dc=meta,c=fr" write 
access to dn.subtree="o=mont-blanc,dc=meta,c=fr"
        by dn="cn=replicateur,o=mont-blanc,dc=meta,c=fr" write 
access to *
        by * read

ATTENTION aux ACL : elles sont exécutées de haut en bas. Il faut donc les organiser de la plus spécifique (attributs, sous-branches) à la plus général (grosse branche et tronc).

Maintenant que l'on a réglé les ACL, il nous faut initialiser les bases avant de se connecter avec phpldapadmin pour les remplir complètement.

Pour cela il suffit de créer un fichier ldif par base :

isere.ldif :

dn: o=isere,dc=meta,c=fr
o: isere
objectClass: top
objectClass: organization

mont-blanc.ldif :

dn: o=mont-blanc,dc=meta,c=fr
o: mont-blanc
objectClass: top
objectClass: organization

ATTENTION NE PAS OUBLIER D'INITIALISER TOUTES LES BASES !!!!

Si on voulait initialiser une sous branche, alors après avoir ajouté le .ldif précédent, on ajouterai celui là :

dn: ou=people,o=mont-blanc,dc=meta,c=fr
ou: people
objectClass: organizationalUnit

Pour ajouter les fichiers LDIF, on utilise cette commande :

ldapadd -x -v -D "cn=manager,o=isere,dc=meta,c=fr" -w password -f isere.ldif

ATTENTION : pour lancer cette commande, il faut que le serveur soit allumer sinon on peut utiliser les commandes slap (slapadd par exemple).

Maintenant il nous faut éditer le fichier de configuration de phpldapadmin pour que celui-ci puisse voir les bases au sein du serveur LDAP :

vi /etc/phpldapadmin/config.php
...
$i=0;
$ldapservers = new LDAPServers; 
$ldapservers->SetValue($i,'server','name','isere'); 
$ldapservers->SetValue($i,'server','host','localhost');
...
$ldapservers->SetValue($i,'server','base',array('o=isere,dc=meta,c=fr'));
... 
$i++;
$ldapservers->SetValue($i,'server','name','mont-blanc');
$ldapservers->SetValue($i,'server','host','localhost');
$ldapservers->SetValue($i,'server','base',array('o=mont-blanc,dc=meta,c=fr'));
$ldapservers->SetValue($i,'server','auth_type','session');
...

Il ne nous reste plus qu'à nous connecter sur phpldapadmin avec notre navigateur.

exemple de login/mot de passe pour la base isere login : cn=manager,o=isere,dc=meta,c=fr Mdp : password

Nous avons ainsi accès à toutes les bases présentent dans notre annuaire. Nous pouvons importer des fichiers .ldif pour initialiser la base (import), en faisant attention que le contenu du fichier soit bien en accord avec l'arborescence de la base.

Voici les acl pour notre ldap primaire :

access to attrs=userPassword,shadowLastChange
        by dn="cn=replicateur,o=isere,dc=meta,c=fr" write
        by dn="cn=replicateur,o=mont-blanc,dc=meta,c=fr" write
        by anonymous auth
        by self write
        by * none
access to dn.subtree="o=isere,dc=meta,c=fr"
        by dn="cn=replicateur,o=isere,dc=meta,c=fr" write
        by dn="uid=company_admin,ou=People,ou=company,o=isere,dc=meta,c=fr" read 
access to dn.subtree="o=mont-blanc,dc=meta,c=fr"
        by dn="cn=replicateur,o=mont-blanc,dc=meta,c=fr" write 
access to *
        by * read

Création de l'annuaire secondaire

Nous allons faire presque pareil que pour l'annuaire primaire sauf que des champs vont changer au niveau de slapd.conf et autres.

Il faut mettre le replicateur dans chaque base avant d'activer la réplication !!!! comme updatedn et updateref

Voici les acl pour l'annuaire dédié à EGW :

access to dn.subtree="ou=People,ou=company,o=isere,dc=meta,c=fr" attrs=userPassword,shadowLastChange
        by dn="cn=replicateur,o=company,dc=meta,c=fr" write
        by dn="cn=egwadmin,o=egroupware,dc=meta,c=fr" read
        by dn="uid=company_admin,ou=People,ou=company,o=isere,dc=meta,c=fr" read
        by anonymous auth
        by self read
        by * none 
access to attrs=userPassword,shadowLastChange
        by dn="cn=replicateur,o=isere,dc=meta,c=fr" write
        by dn="cn=replicateur,o=mont-blanc,dc=meta,c=fr" write
        by dn="cn=egwadmin,o=egroupware,dc=meta,c=fr" read
        by anonymous auth
        by self write
        by * none 
access to dn.subtree="o=mont-blanc,dc=meta,c=fr"
        by dn="cn=replicateur,o=mont-blanc,dc=meta,c=fr" write 
access to dn.subtree="o=egroupware,dc=meta,c=fr"
        by dn="cn=egwadmin,o=egroupware,dc=meta,c=fr" write 
access to *
        by * read

LDAP et Egroupware

Il faut tout d'abord configurer Egroupware correctement puis créer le compte administrateur qui va avoir pour effet juste d'initialiser les groupes. Puis se loguer avec le compte admin de Egroupware pour créer les autres groupes et attribuer des utilisateurs aux groupes. Ensuite pas de problème.

Commentaires

1. Le mercredi, novembre 14 2007, 09:15 par Qualinnove

Aujourd'hui eGroupWare possède des modulès dédiés à la gestion des risques et la gestion des objectifs. Et ça grâce aux Extensions Qualinnove:

Ce que couvrent les Extensions Qualinnove

Qualinnove permet la coordination complète des activités :

* Qualinnove est un ensemble de modules pour Egroupware.
* Qualinnove gère toutes les actions pour tout type d'activités.
* Qualinnove est un outil complet pour gérer correctement la totalité du cycle de vie d'une action.

Quelques exemples de gestion des activités selon Qualinnove :

* Gestion des points en cours : permet de suivre les décisions, les risques les opportunités, les changements, les incidents, les informations, et permet de générer un plan d'action adéquat. L'objectif est de réfléchir aux causes et aux impacts d'une décision (ou d'un risque ou d'une opportunité). Il est possible de compléter les informations relatives aux décisions, en décrivant les actions possibles, avant la réunion de prise de décision afin de permettre aux décideurs de prendre la meilleure décision possible. Cette fonctionnalité est particulièrement utile lorsque votre équipe travaille dans des lieux géographiquement éloignés.
* Gestion des objectifs: permet à un utilisateur, à une organisation, ou à un projet de définir la liste de ses objectifs, puis de les lier à ses partenaires et aux besoins auxquels il faudra répondre pour atteindre ces objectifs.
* Gestion agile : permet au gestionnaire de tâches de travailler de façon agile. Cette fonctionnalité permet la création automatique de livraisons et d'itérations. Un besoin (nommé "tracker" dans Egroupware peut ensuite être lié à une livraison, suivi et controlé.
* Gestion des réunions et des compte-rendus : permet au gestionnaire de tâches d'ajouter des points à l'ordre du jour d'une réunion (un contact, une action, un projet, un point en cours, un objectif, un besoin ou une autre réunion). Pendant cette réunion, vous pouvez mettre à jour chaque point de façon collaborative et générer en fin de réunion le compte-rendu sous forme de fichier PDF.

Parce que Qualinnove permet de gérer tout type de tâches, Qualinnove peut également gérer des projets et leurs contraintes spécifiques :

Quelques exemples de gestion de projet selon Qualinnove :

* Définition du projet : dates, budget, et descriptions
* Gestion des équipes : ressources, mission
* Gestion du temps : Calendrier projet et Gantt Chart
* Suivi financier et feuille de temps
* Gestion de la stratégie : decision, objectif, risque, opportunité
* Gestion des livrables : gestion des versions avec notification de nouvelle version, gestion des check in/out , et stockage sur un serveur de fichier virtuel.

2. Le mercredi, août 6 2008, 03:49 par daoud

Merci WorldWarrior pour ce que tu fais. C'est du très bon boulot et très instructif.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet