Inscriptions automatisées / Synchronisation LDAP

Inscriptions automatisées / Synchronisation LDAP

par Séverin Terrier,
Nombre de réponses : 4
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
    Bonjour à tou(te)s,

j'ai quelques interrogations par rapport aux inscriptions automatisées, et à la synchronisation automatique des comptes utilisateurs via un annuaire LDAP.

J'espère que certain(e)s pourront me renseigner, et que ce fil pourra aider d'autres personnes ayant les mêmes préoccupations...

But du jeu : créer, et synchroniser (modifier, voir supprimer) automatiquement les comptes de Moodle, en utilisant le script /auth/ldap/auth_ldap_sync_users.php !

Je lance le script avec la commande suivante :
/usr/bin/php -c /etc/php.ini -d memory_limit=256M -d max_execution_time=1000 /var/www/html/moodle-sync-ldap/auth/ldap/auth_ldap_sync_users.php

J'aimerais quelques confirmations de mes premiers tests :
- rien n'est touché sur les utilisateurs en authentification "manual" (ouf) !
- les utilisateurs de la base LDAP sont bien importés (ou mis à jour, ou supprimés)
- ceux en authentification "cas" ne sont pas modifiés, alors que cela m'aurait arrangé...

J'avais, en test préalable au remplissage via LDAP, créé un utilisateur manuellement, mais avec authentification "ldap", et au premier remplissage, j'ai eu sur cet utilisateur l'erreur suivante :

<div class="notifyproblem" align="center">Duplicate entry 'terrier' for key 3<br /><br />INSERT INTO mdl_user ( AUTH, CONFIRMED, USERNAME, IDNUMBER, FIRSTNAME, LASTNAME, EMAIL, PHONE1, PHONE2, DEPARTMENT ) VALUES ( 'ldap', 1, 'terrier', 'terrier', 'SEVERIN', 'TERRIER', 'mon.mail@univ-tlse1.fr', '', '', '' )</div><br />
error inserting user terrier with idnumber terrier

et mon utilisateur a été marqué comme désinscrit triste

je l'ai réactivé à la main, et en repassant le script, il n'y a plus eu de problème...

Il semblerait qu'une solution à ce problème existe ici.

Question subsidiaire : dans quelques temps (mois), nous comptons passer en authentification unique via "cas", plutôt que "ldap".
Je voudrais être sur que l'on pourra continuer à synchroniser les utilisateurs, depuis l'annuaire LDAP, mais en leur fixant l'authentification "cas" !

Est-ce qu'il y a d'autres éléments à prendre en compte, et des choses dont il faudrait se méfier ?

Désolé pour ce long message, si vous avez des idées/remarques, n'hésitez pas clin d’œil
Moyenne des évaluations  -
En réponse à Séverin Terrier

Re: Inscriptions automatisées / Synchronisation LDAP

par Arnaud Saint-Georges,
Bonjour Séverin,

A l'université de Rennes 2, nous somme passés d'une authentification LDAP à une authentification CAS depuis la rentrée d'octobre. Au préalable, nous avons "manuellement" mis à jour le champ auth de la table user (remplacement de 'ldap' par 'cas' pour tous les utilisateurs ayant 'ldap').

Voilà comment nous fonctionnons maintenant :
Les informations concernant le profil utilisateur sont synchronisées à partir de LDAP à chaque connexion (par exemple, son adresse de courrier électronique).
Les nouveaux utilisateurs sont créés dans Moodle chaque nuit à partir de LDAP. Ce qui est indispensable pour que les gestionnaires puissent les inscrire dans les cours.
Les utilisateurs Moodle sont éventuellement mis à jour chaque nuit à partir de LDAP.
Aucun utilisateur Moodle n'est automatiquement supprimé s'il n'existe plus dans LDAP (on se méfie wink).

Voici comment la commande est lancée (extrait du fichier cron) :
00 07 * * * /applis/Programmation/php/bin/php /applis/Internet/moodle/auth/cas/auth_ldap_sync_users.php 1>>/applis/Internet/moodle/logs/auth_ldap_sync_users.log 2>>/applis/Internet/moodle/logs/auth_ldap_sync_users.error.log
Tu noteras qu'elle est appelée depuis le répertoire cas, et non ldap. C'est pour cela, il me semble me rappeler thoughtful, qu'elle met à jour les utilisateurs en authentification 'cas'.

D'un point de vue technique, j'ai modifié le script moodle/auth/ldap/lib.php pour :
- corriger quelques erreurs ;
- auugmenter le traçage (log) ;
- synchroniser sur la base du code utilisateur 'username' et non du numéro d'étudiant 'idnumber' (car les enseignants n'en ont pas !) ;
- bien traiter la synchronisation de l'adresse postale complète (que nous avons intégrée dans Moodle [en bricolant mixed] pour envoyer automatiquement des polycopiés par la Poste) ;
- ne pas supprimer les utilisateurs dans Moodle.

Je joins la version modifiée de lib.php.
Remarque : Nous travaillons avec la version 1.5+ de Moodle.






En réponse à Arnaud Saint-Georges

Re: Inscriptions automatisées / Synchronisation LDAP

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
    Bonjour,

merci Arnaud pour cette réponse détaillée, qui devrait bien me servir pour la suite...

Je regarderais tout cela dans le détail (après le repas) sourire clin d’œil
En réponse à Séverin Terrier

Re: Inscriptions automatisées / Synchronisation LDAP

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
suite de mes tests... pour compléter les choses...

Finalement, je crois que nous suivons ce que vous faites à l'Université de Rennes 2, avec quelques mois de décalage sourire clin d’œil

Par contre, ayant des moyens humains très limités, et afin de pouvoir suivre les évolutions de Moodle avec le moins de contraintes possibles, nous essayons au maximum de ne pas modifier (les fichiers de) Moodle, et de nous y adapter (tant que c'est possible facilement).

Donc, nous avons choisi d'avoir la même information pour "idnumber" que pour "username", ce qui nous simplifie les choses... et fonctionne pour les étudiants, enseignants, et administratifs clin d’œil

Je pense que nous laisserons active la suppression des utilisateurs, ce qui permettra d'avoir une base cohérente avec LDAP.

Il me reste juste éventuellement à filtrer certains utilisateurs LDAP (avec des identifiants temporaires), pour ne pas les créer dans Moodle !

Par rapport à CAS, effectivement, c'est bien à cela que je pensais :
- modification manuelle du champ "auth" dans la table "user"
- appel d'un autre script (qui, au final, utilise le code de "auth/ldap/lib.php" clin d’œil)

Nous fonctionnons avec la version 1.5.3+, et effectivement, il y a plusieurs différences avec ton fichier joint...

Merci encore Arnaud, car ton message (et mes tests) confirme bien ce que je pensais, et le bon fonctionnement, et je pense que nous mettrons en place cette automatisation en janvier (pour éviter tout risque en cas de problème pendant les congés) sourire
En réponse à Arnaud Saint-Georges

Re: Inscriptions automatisées / Synchronisation LDAP

par André Dumas,

Bonjour,

  Je profite du fait d'avoir des experts en ligne pour poser deux ou trois questions qui me chagrinnet.

  J'essaie de faire fonctionner Moodle et les inscriptions à partir d'un annuaire Ldap installé sur une Debian.

  On utilise Openldap, l'identificatin fonctionne bien mais l'inscription non.

 Question : y a t-il des incompatibilités par rapport à Openldap?

    Si oui, y a t-il des solutions?

    y aurait-il moyen, un script, qui permette d'extraire ds groupes (classes complètes) d'un Ldap pour les inscrire à un cours

Je suis sous Moodle 1.5.3

  Et un grand merci pour vos réponses éclairées

André