Peuplement LDAP

Initialiser la liste des auteurs à partir d’un annuaire LDAP

Le plugin Peuplement LDAP permet d’initialiser la liste des auteurs à partir d’une recherche sur un annuaire LDAP.

Spip et l’authentification LDAP

Spip permet d’authentifier les auteurs du site sur un annuaire LDAP. Ainsi, l’auteur n’a pas besoin de mémoriser un nouveau couple login/mot de passe d’identification pour accéder à l’interface d’administration du site.

Une fois la première authentification réussi, l’auteur est alors référencé dans la base de données de Spip avec le droit d’accès par défaut tel que défini à la configuration du site. On peut alors modifier ses droits d’accès sur le site.

Plus d’information sur l’accès LDAP ici.

Objectif du plugin

Ce plugin permet à partir d’une recherche sur l’annuaire LDAP de « pré-enregistrer » les auteurs.

Ainsi, l’administrateur du site peut commencer à attribuer des droits personnalisés sans avoir a attendre la première connexion de l’auteur.

Versions du plugin

Ce plugin est disponible :

-  en version stable pour SPIP 1.9,
-  en version de test (depuis le 25 janvier 2009) pour SPIP 2.0.

Pré-requis

Un site Spip avec l’accès LDAP configuré.

Installation

  1. Télécharger le plugin pour la version de Spip utilisée (voir les « Documents joints » ci-dessous).
  2. Se reporter à la page http://www.spip.net/fr_article3396.html pour l’installation

Utilisation

Une fois le plugin activé, se connecter en tant qu’administrateur du site. Dans le sous-menu « Auteurs », le logo du plugin doit apparaître.

-  Etape 1

Saisissez le filtre Ldap a utiliser pour la recherche.

Attention !!!
Des filtres comme (objectClass=*) renvoient l’ensemble des entrées LDAP.

Quelques exemples de filtres :

Filtre Commentaire
(mail=*@domaine.net) Toutes les entrées dont l’attribut mail fini par @domaine.net
(&(l=Toulon)(objectClass=person)) Toutes les entrées de type « person » dont la localisation est Toulon
(ou=Service*) Toutes les entrées appartenant au service « Service »

Contacter votre responsable d’annuaire pour avoir les spécifications complètes des schémas utilisés.

Dans un but de performance, il est conseillé de se baser sur des attributs indexés.

-  Etape 2

L’étape 2 vous présente la liste des entrées Ldap qui corrspondent au critère de recherche.

Vous avez la possibilité de valider le filtre (ajouter toutes les entrées comme auteur), ou sélectionner individuellement les entrées qui vous intéressent pour les ajouter en tant qu’auteur.

-  Etape 3

Cette étape vous présente un compte-rendu des actions opérées.

L’animation flash ci-dessous montre un exemple d’utilisation

Utilisation du plugin Peuplement LDAP

Limitations

-  Si l’attribut mail est multivalué, des incohérences de données peuvent se produire.
-  Le plugin a fonctionné correctement lors de l’importation de 600 auteurs. Le service Ldap (slapd) étant hébergé sur la même machine que le serveur Web.

Prévision d’évolutions

-  Attribuer un droit différent de celui défini lors de la configuration de l’accès Ldap.
-  Notifier les nouveaux inscrits par email.

-  Le logo du plugin est signé Mathieu Drouet (izo)
-  Les autres icones utilisées proviennent de la gallery du Tango Freedesktop Project (http://tango.freedesktop.org/Tango_Icon_Gallery)

Discussion

14 discussions

  • Bonjour.
    Les étapes 1 et 2 sont passées sans problème, malheureusement, problème dans l’étape 3 : il reconnait bien les doublons mais n’arrive pas a insérer les nouveaux auteurs (icone : échec de l’insertion).
    A votre avis, cela vient-il de ma base SPIP, est-ce dû a l’annuaire LDAP (dn ou cn) ou à un problème de configuration ?
    Merci d’avance.

    Répondre à ce message

  • 1

    Bonjour,

    Je tourne sur Spip 2.1 et j’ai une question concernant le filtrage de mes utilisateurs.
    Le peuplement fonctionne très bien seulement je ne voudrai ouvrir l’accès au site qu’à une partie de mon ldap or à l’heure actuelle tout mon ldap est authorisé sachant que j’ai bien ma liste d’auteurs sur spip correspondant au groupe du ldap voulu (via le filtre initial).

    Cordialement.

    • Je me réponds, la source trouvée là : http://forum.spip.org/fr_232620.html

      fichier ecrire/auth/ldap.php
      ligne 162 : remplacer « objectClass=* » par son filtre.
      Pourrait-on l’ajouter en variable dans une prochaine version ?

      Cordialement.

    Répondre à ce message

  • Kevin Van Keulen

    Bonjour,

    je tenais d’abord à vous remercier pour ce plugin, qui nous soulage d’une tâche fastidieuse.
    J’ai encore un petit soucis, mais je ne sais pas si c’est lié à votre plugin ou à un autre :
    j’arrive à importer grâce à votre plugin (version 2.0.0) les utilisateurs suivant le filtre qui va bien.
    J’utilise aussi le plugin Accès restreint (version 3.3.1) pour ne donner l’accès de différentes parties du site qu’à certaines personnes.
    J’ai pu ajouter tous les utilisateurs importés grâce à votre plugin dans la liste des personnes autorisées. Par contre, il se passe quelque chose que je ne comprends pas :
    la première fois que la personne va essayer de se connecter avec son identifiant ldap, cela va l’enlever de la liste des personnes autorisées. Il faut alors que je la rajoute manuellement pour qu’il puisse utiliser son identifiant ldap.
    Pensez-vous que cela vienne d’une mauvaise communication entre les deux plugins ?
    Merci d’avance pour votre aide.

    Répondre à ce message

    • cool ça marche pour 2.1.8

      Adaptation du peuplement LDAP à SPIP 2.0.10 (disparition de auth_ldap_inserer, trop restrictive).

      c’est la fonction ci-dessous qui est modifiee dans :
      Peuplement_LDAP/inc/peuplement_ldap_common.php

      /**
      * Insère les entrées 
      * Retourne le résultat de l'insertion :
      * 0 Echec
      * 1 Identifiant existant déjà
      * 2 Ok
      */
      function insere_auteur($dn,$mail){
                      // Controle qu'un identifiant de connexion identique ne soit pas déjà présent
      
              if (sql_countsel("spip_auteurs","email=".sql_quote(strtolower($mail))))
                      return 1;
      
              if ($GLOBALS['meta']["ldap_statut_import"]
              AND $desc = auth_ldap_retrouver($dn, array('login' => 'uid', 'nom' => 'cn', 'email' => 'mail'))) {
                // rajouter le statut indique  a l'install
                      $desc['statut'] = $GLOBALS['meta']["ldap_statut_import"];
                      $desc['source'] = 'ldap';
                      $desc['pass'] = '';
      
                      if (sql_insertq('spip_auteurs', $desc)) return 2;
              }
              return 0;
      }

      le fichier entier ici : https://www.assembla.com/code/spip-zone/git/nodes/_plugins_/Peuplement_LDAP/spip-2.0/Peuplement_LDAP/inc/peuplement_ldap_common.php?rev=014cdaaf49f616d2a085f3e0cc778cffe22e0066

    • bizarre de mon coté avec les modifs proposées ca ne fonctionne pas bien

      les auteurs sont bien importés je ne récupère ni le login , ni la bio. ce qui rend les authentifications impossibles

    • Ton authentification marche bien sur le ldap ? (sans imports)

    • oui après vérification sur spip 2.0 et spip 2.1.10
      meme les champs étendus sont importés avec spip 2.1

    Répondre à ce message

  • patrice47310

    Bonjour,

    après avoir coché les entrées et cliqué sur le bouton Valider la sélection, j’obtiens une erreur :

    Fatal error : Call to undefined function auth_ldap_inserer() in /var/www/plugins/Peuplement_LDAP/inc/peuplement_ldap_common.php on line 140

    pb de lien impossible de récupérer la modif
    Est que quelqu’un pourrait la mettre à disposition
    merci

    Répondre à ce message

  • Bonjour,

    Suite à l’installation de SPIP 2.1.2 et du plugin ’Peuplement Ldap’, je n’arrive pas à accéder à l’interface de configuration et j’ai le message suivant :
    Fichier configurer_PeuplementLdap introuvable

    Donc je ne peux pas aller plus loin pour avec le plugin ’Ldap++’ !!! je voulais exploiter et profiter de mon annuaire LDAP en place...
    Merci de me dire si vous avez une idée !

    Cordialement,
    Richard

    Répondre à ce message

  • je viens de le tester avec spip 2.1.1
    ca fonctionne bien
    en liaison avec ldap++ et groupes_auteurs2 version spip2.1.1 (bientot sur contrib) c’est super

    Répondre à ce message

  • 2
    Spipeur_Debutant

    Bonjour,

    J’utilise SPIP 2.1, j’ai installé le plugin, mais il est impossible quelque soit mon filtre de le faire fonctionner, ma connexion au serveur ldap échoue.
    Ce plugin fonctionne t il si mon ldap est sur une autre machine ? Si oui, comment lui donner l’adresse IP du serveur et lui préciser le dn ?

    Merci

    • Spipeur_Debutant

      Bonjour,

      Bon il fonctionne correctement. Il fallait repartir depuis l’installation pour activer le ldap.

      Maintenant mon souci est que je me retrouve avec des fois des utilisateurs en doublons après importation depuis mon LDAP, pourtant je n’ai pas de doublons dans LDAP. De ce fait, vu qu’ils auront un accès restreint, ça pose souci.

      Pour certains utilisateurs, quand je fais modifier auteur, il n’y a rien dans le login du user et du coup, il ne peuvent pas se connecter. Et pour d’autres j’ai bien un login (cn du ldap).

      Que faire ?

      Merci

    • Spipeur_Debutant

      Personne n’a d’idées ?

    Répondre à ce message

  • 10

    Bonjour,

    Je suis novice et j’essaye d’utiliser le plugin peuplement ldap.
    J’utilise spip 2.0.10 et le plugin pour 2.0.

    L’installation de spip avec ldap c’est bien passé.
    Dans l’espace privé j’ai bien le plugin dans le menu auteur.
    Par contre si je lance le filtre (mail=*), il n’y a aucun résultat d’affiché...
    Je ne comprends pas, normallement tout le contenu du répertoire ldap devrait s’afficher, non ?

    Est ce que j’aurais oublié qq chose ?
    Faut-il une config speciale ?
    Pour info, j’ai refusé l’inscription des visiteurs et des auteurs.

    Merci de votre aide.

    Arale

    • Même symptôme sous 2.0.10 ! Installation ok, mais le filtre ne semble pas se déclencher (je clique sur valider mais rien ne se passe) !

    • Bonjour,

      même sans la modification nécessaire pour Spip 2, la liste des entrées Ldap correspondant au filtre devrait apparaître...

      -  Est-ce que l’accès Ldap est bien configuré ? (un compte de l’annuaire peut-il s’authentifier ?)
      -  Est-ce qu’avec un client Ldap (la commande ldapsearch par exemple), le filtre fonctionne bien ?

      Cordialement.

    • En effet, une personne de l’annuaire ne peut pas se connecter. Je vais regarder d’ou ca peut venir.

    • Bonjour, même sans la modification nécessaire pour Spip 2, la liste des entrées Ldap correspondant au filtre devrait apparaître...

      C’est la version pour spip 2 qui est installée en auto.

      Est-ce que l’accès Ldap est bien configuré ? (un compte de l’annuaire peut-il s’authentifier ?)

      Oui

      Est-ce qu’avec un client Ldap (la commande ldapsearch par exemple), le filtre fonctionne bien ?

      Oui

    • Bon, j’ai un premier élément de réponse...
      En fait, mon serveur web est situé derrière un reverse proxy (RP).
      Et quand j’attaque directement le serveur web physique, le plugin fonctionne, alors que si je passe par le RP rien ne s’affiche !
      Est-ce que quelqu’un aurait une idée de ce qui « cloche », sachant que la traversée du RP est à priori transparente et que d’ailleurs tout le reste du site fonctionne normalement (ce qui laisse supposer que c’est une spécificité du fonctionnement du plugin qui fait que ça marche pas dans ce cas là).

    • Le RP fait-il du cache ?

      L’url pour les trois étapes de l’importation des auteurs est la même : #URL_SITE_SPIP/ecrire/ ?exec=peuplement_ldap .

      D’après votre premier post, on dirait que la page est prise dans le cache : « (je clique sur valider mais rien ne se passe) » .

      Vous utilisez le mod_proxy d’Apache (et si oui, quelle version d’Apache) ?

    • Bon, j’ai trouvé !!!! (ça m’a pris du temps mais bon)...
      Dans le fichier inc/peuplement_ldap_common.php ligne 20 il y a une faute de html (sans doute de frappe) :

      echo "<form action=\"".generer_url_ecrire("peuplement_ldap")."\" method=\"post\" />"; 

      le dernier / à la fin n’est pas conforme ! Il indique en effet que la balise est ouvrante et fermante en même temps, ce qui n’est pas le cas car il y a une balise fermante

      plus bas. Du coup le html généré n’est pas conforme.

      Le module mod_proxy_html corrige les pages automatiquement (j’y peux rien, même si je trouve ça un peu trop intrusif) et du coup il remplace le /> par ></form> ce qui fait que le bouton de validation se retrouve hors formulaire et donc sans effet !

      Voila, une petite correction de pas grand chose !
      F.

    • francis

      j’ai testé sur spip 2.1
      L’authentification ldap installée, fonctionnelle, je n’arrive à rien obtenir via ce plugins.
      J’obtiens le message suivant :

      Fatal error : Call to undefined function auth_ldap_connect() in /home/kwartz/www/extranetwork/ecrire/base/connect_sql.php on line 220

      voici les lignes 217 à 220

      // compatibilite
      function spip_connect_ldap($serveur=’’)
      include_spip(’auth/ldap’) ;
      return auth_ldap_connect($serveur) ;

      Si quelqu’un a une idée du bug ??

      Problème résolu ; incompatibilité avec ldap++ !

    • Paddle

      en fait, ce n’est pas un bug.
      le include_spip(auth/ldap) va chercher le premier fichier ldap.php dans un répertoire auth.

      Il se trouve que ce fichier sera plugin/auto/ldap_plus_plus/auth/ldap.php au lieu de ecrire/auth/ldap.php qui lui contient bien la fonction.

      En attendant de faire mieux, j’ai simplement copié la fonction attendue dans le fichier ldap.php du plugin ldap++ et tout re-fonctionne bien. Par contre, ce n’est pas très propre.

    • J ai un problème avec la version 2.1 ...
      au moment d’ajouter l’utilisateur il y a l erreur suivante « ..... Call to undefined function auth_ldap_inserer() ..... »
      En effet la fonction auth_ldap_inserer a ete supprimé dans la v 2.1 ... mais comment on insert un utilisateur alors ???

    Répondre à ce message

  • 4

    Salut

    Sur un SPIP 2.0.10 [14698], avec le plugin peuplement ldap (dispo sur cette page) activé, après avoir coché des entrées et cliqué sur le bouton Valider la sélection, j’obtiens une erreur :

    Fatal error : Call to undefined function auth_ldap_inserer() in /var/www/plugins/Peuplement_LDAP/inc/peuplement_ldap_common.php on line 140

    Quelq’un a-t-il déjà eu cette erreur ? comment peux-t-on la résoudre

    Merci

    • Cette fonction a disparu lors du dépôt 14622, qui vise à optimiser le nombre de requêtes infructueuses au serveur LDAP. Il faudrait que l’auteur de ce plugin remplace l’appel à cette fonction par sa définition, très courte, qu’on peut retrouver dans les anciennes versions.Du coup, le plugin sera compatible avec toutes les versions 2.0.

    • Bon, j’ai fait la modif à récupérer ici,
      en espérant que j’ai bien compris de quoi il retournait. En l’état ce ne sera pas compatible avec les versions antérieures, il y a plus de boulot à faire.

    • Super

      Merci pour la correction, elle fonctionne parfaitement

    • Bonjour,

      J’ai tenté de récupérer le correctif mais il semble avoir disparu du site :

      Connexion interrompue
      La connexion avec le serveur a été réinitialisée pendant le chargement de la page.
      La liaison au réseau a été interrompue pendant la négociation d’une connexion. Veuillez réessayer.

      Est-ce qu’il serait possible de l’avoir par un autre moyen ?

      Cordialement,

      Juliette

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom