Dans cette partie nous allons voir comment configurer CPS pour qu'il utilise LDAP. Il ne s'agit pas d'une introduction à LDAP. Nous allons simplement voir les mécanismes de bases qui permettent d'interfacer CPS avec LDAP.
Ne pas appliquer la procédure telle quelle à un site en production, cela pourrait causer la perte de données.
Ce document s'appuie sur les produits suivants :
Cette version contient certains bugs relatifs à LDAP qui devraient être réglés dans la version suivante.
Dans la suite de ce document la base LDAP sera considérée comme initialisée avec le contenu suivant :
dn: ou=sophia,o=ensmp,c=fr ou: sophia objectClass: top objectClass: organizationalUnit dn: ou=People, ou=sophia,o=ensmp,c=fr ou: People objectClass: top objectClass: organizationalUnit dn: ou=Groups, ou=sophia,o=ensmp,c=fr ou: Groups objectClass: top objectClass: organizationalUnit
Le manager est identifié par le dn suivant :
cn=Manager,ou=sophia,o=ensmp,c=fr
Les classes associées aux membres seront top et person.
Les classes associées aux groupes seront top et groupOfUniqueNames.
Il faut commencer par installer le produit LDAPUserGroupsFolder. Pour cela, décompresser le contenu de l'archive LDAPUserGroupsFolder-1.0.tar.gz dans le répertoire Products de l'installation Zope.
Redémarrer Zope pour que le nouveau produit soit pris en compte.
L'authentification via LDAP nécessite de remplacer le dossier acl_users qui se trouve à la racine du site CPS par un dossier de type LDAPUserGroupsFolder.
Aller à la racine du site CPS, et supprimer le dossier acl_users.
Toujours à la racine du site CPS, ajouter un objet de type LDAPUserGroupsFolder.
Configurer la connexion au serveur LDAP, dans le cadre de ce document les Roles ne sont pas stockés dans le serveur LDAP.
Tableau 1. Add LDAP User Folder
Title | |
LDAP Server[:port] | 127.0.0.1:10389 |
Login Name Attribute | UID |
RDN Attribute | UID |
Users Base DN | ou=People,ou=sophia,o=ensmp,c=fr |
LDAPRole storage | LDAPRoles not stored on LDAP server |
LDAPRoles Base DN | |
Groups Base DB | ou=Groups,ou=sophia,o=ensmp,c=fr |
Manager DN** | cn=Manager,ou=sophia,o=ensmp,c=fr |
User object classes | top,person |
User password encryption | SHA |
Default User Roles | Member |
La valeur Member pour Default User Roles est valable car notre serveur LDAP ne sert que pour ce site CPS.
Une fois le nouveau dossier acl_users en place, il est possible de créer des utilisateurs et des groupes via la ZMI.
Sélectionner le dossier acl_users (à la racine du site CPS).
Aller dans l'onglet Users
Créer un nouvel utilisateur qui sera le webmaster du site CPS. En dehors des champs requis il ne faut pas oublier de cocher la case Manager.
Une fois cet utilisateur créé il est possible de se logguer via CPS en tant qu'administrateur. Les annuaires et les droits sur les rubriques ne sont cependant plus modifiables via CPS. Pour cela il faut activer les annuaires basés sur LDAP.
Pour activer cette fonctionnalité il faut remplacer les annuaires members et groups du dossier portal_metadirectories par ceux disponibles sur le site http://www.cps-project.org sous la forme de .zexp.
Ces deux annuaires peuvent également être créés manuellement, par l'intermédiaire d'objets LDAPDirectory.
Télécharger ldap-members.zexp et ldap-groups.zexp.
Dans la ZMI, supprimer les dossiers members et groups contenus dans portal_metadirectories.
Toujours dans portal_metadirectories, importer ldap-members.zexp et ldap-groups.zexp.
Pour importer des fichiers .zexp ceux-ci doivent être placés dans le répertoire import de l'installation de Zope.
Une fois l'importation terminée, deux annuaires doivent être à nouveau présents dans portal_metadirectories
Pour chaque annuaires, aller dans l'onglet LDAP et rentrer les paramètres de connexion au serveur LDAP.
Le schéma de l'annuaire members contient trop d'informations par rapport à la structure de notre LDAP (qui est très sommaire), il faut donc supprimer certains attributs.
Aller dans portal_metadirectories/members
Sélectionner l'onglet Schema
Supprimer les attributs :
fullName
preferredLanguage
employeeType
mobile
postalAddress
roles
puis mettre cn comme Alias de givenName.
Revenir dans l'onglet Properties
Remplacer le contenu du champ Display Property par sn. C'est ce champ qui sera utilisé pour représenter un utilisateur dans CPS (typiquement dans les listes déroulantes permettant d'affecter des droits).
Si tout s'est déroulé correctement il doit désormais être possible d'utiliser CPS+LDAP. Si des erreurs se produisent, consultez la section suivante qui décrit celles que j'ai pu rencontrer.
Voici certaines des erreurs rencontrées lors de l'installation.
Erreurs lors de la création du dossier acl_users
Vérifier que la connexion au serveur LDAP est correctement paramétrée (dossier acl_users). Cette erreur ce produit généralement lors d'une tentative de modification d'une entrée alors que les champs Manager DN et le Password correspondant ne sont pas renseignés.
Erreurs lors de manipulations sous CPS
Cette erreur ce produit à partir du moment où l'authentification LDAP est activée et tant que les annuaires ne sont pas basés sur LDAP.
Cette erreur ce produit à partir du moment où l'authentification LDAP est activée et tant que les annuaires ne sont pas basés sur LDAP.
Vérifier que l'attribut roles a bien été supprimé du schéma de portal_metadirectories/members.
Vérifier que la connexion au serveur LDAP est correcte (avec authentification) pour les dossier portal_metadirectories/members et portal_metadirectories/groups.
Vérifier que la connexion au LDAP est correctement paramétrée pour les annuaires (portal_metadirectories), notamment le champ Base DN.
Vérifier que la connexion au LDAP est correctement paramétrée pour les annuaires (portal_metadirectories), notamment le champ Base DN.