Utiliser un serveur LDAP

De MoodleDocs
Révision datée du 10 mai 2019 à 10:40 par Anaïs Richert (discussion | contributions) (→‎Serveurs Windows)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à :navigation, rechercher

Remarque : la traduction de cette page n'est pas terminée. N'hésitez pas à traduire tout ou partie de cette page ou à la compléter. Vous pouvez aussi utiliser la page de discussion pour vos recommandations et suggestions d'améliorations.


Ce document décrit comment configurer l'authentification LDAP (Lightweight Directory Access Protocol) dans Moodle. Nous couvrons les sections de base, avancées et quelques sections de dépannage pour aider l'utilisateur dans l'installation et l'administration de LDAP dans Moodle.

Scénario basique

L'approche simple et directe pour la plupart des installations.

Hypothèses

Moodle prend en charge plusieurs types de serveurs LDAP qui ont des structures de répertoires différentes, des paramètres de configuration spéciaux, etc. Même si vous utilisez le même type de serveur LDAP (par exemple, MS Active Directory), chaque site pourrait utiliser une structure d'annuaire complètement différente pour tenir ses comptes utilisateurs, groupes, etc. Afin de pouvoir montrer des exemples de paramètres de configuration dans les sections ci-dessous, nous allons supposer un hypothétique site Moodle et serveur LDAP avec les caractéristiques listées ci-dessous.

REMARQUE IMPORTANTE: assurez-vous de vérifier votre site Moodle et les détails du serveur LDAP (y compris sa structure de répertoire) et ajustez les paramètres pour refléter votre propre configuration.

  1. Votre site Moodle est situé à http://your.moodle.site/.
  2. Vous avez configuré votre installation PHP avec l'extension LDAP. Il est chargé et activé, et il s'affiche lorsque vous vous rendez sur http://your.moodle.site/admin/phpinfo.php. (connecté en tant qu'utilisateur "admin").
  3. Votre serveur LDAP a pour adresse IP 192.168.1.100.
  4. Vous n'utilisez pas LDAP avec SSL (aussi appelé LDAPS) dans vos paramètres. Ceci peut empêcher certaines opérations de fonctionner (par exemple, vous ne pouvez pas mettre à jour les données si vous utilisez MS Active Directory -- MS-AD à partir de maintenant --), mais devrait être OK si vous voulez juste authentifier vos utilisateurs.
  5. Vous ne voulez pas que vos utilisateurs changent leurs mots de passe la première fois qu'ils se connectent à Moodle.
  6. Vous utilisez un seul domaine comme source de vos données d'authentification au cas où vous utilisez MS-AD (plus d'informations à ce sujet dans les annexes).
  7. Vous utilisez un nom distingué de niveau supérieur (DN) de dc=my,dc=organization,dc=domain comme racine de votre arbre LDAP.
  8. Vous avez un compte utilisateur LDAP non privilégié que vous utiliserez pour vous connecter au serveur LDAP. Ce n'est pas nécessaire avec certains serveurs LDAP, mais MS-AD l'exige et cela ne fera pas de mal si vous l'utilisez même si votre serveur LDAP n'en a pas besoin. Assurez-vous que ce compte et son mot de passe n'expirent pas, et faites en sorte que ce mot de passe soit aussi fort que possible. Rappelez-vous que vous n'avez besoin de taper ce mot de passe qu'une seule fois, lors de la configuration de Moodle, alors n'ayez pas peur de le rendre aussi difficile à deviner que possible. Disons que ce compte utilisateur a un DN de cn=ldap-user,dc=my,dc=organization,dc=domain, et mot de passe hardtoguesspassword.
  9. Tous vos utilisateurs Moodle sont dans une unité organisationnelle (OU) appelée "moodleusers", qui se trouve juste sous votre racine LDAP. Ce OU a un DN de ou=utilisateurs de moodleusers,dc=my,dc=organization,dc=domain.
  10. Vous ne voulez pas que les mots de passe de vos utilisateurs LDAP soient stockés dans Moodle.

Activation de l'authentification LDAP

Un administrateur peut activer l'authentification LDAP comme suit :

  1. Allez dans Administration du site > Plugins > Authentification > Gestion de l'authentification et cliquez sur l'icône en regard de LDAP Server. Lorsqu'elle est activée, elle n'est plus grisée.
  2. Cliquez sur le lien Paramètres, configurez si nécessaire (voir les informations ci-dessous), puis cliquez sur le bouton "Enregistrer les modifications".
ConfigLDAP.png

Il ne vous reste plus qu'à remplir les valeurs. Allons-y pas à pas

Paramètres du serveur LDAP

Nom du champs Valeur à remplir
URL Hôte Comme l'adresse IP de votre serveur LDAP est 192.168.1.100, tapez "ldap://192.168.1.100". (sans les guillemets), ou simplement "192.168.1.100" (certaines personnes ont du mal à se connecter à la première syntaxe, surtout sur les serveurs MS Windows).
Version A moins que vous n'utilisiez un très vieux serveur LDAP, version 3 est celui que vous devriez choisir.
Codage LDAP Spécifiez le codage utilisé par le serveur LDAP. Probablement de l'Utf-8.

Table des Matières

Paramètres de liaison

Nom du champ Valeur à remplir
Ne mettez pas les mots de passe en cache Comme vous ne voulez pas stocker le mot de passe de l'utilisateur dans la base de données Moodle, choisissez "'Oui'" ici.
Nom distinctif C'est le nom distinctif de l'utilisateur bind défini ci-dessus. Tapez simplement "cn=ldap-user,dc=my,dc=organization,dc=domain". (sans les guillemets).
Mot de passe Il s'agit du mot de passe de l'utilisateur de liaison défini ci-dessus. Tapez "hardtoguesspassword". (sans les guillemets).

Table des Matières

Paramètres de recherche utilisateur

Nom du champs Valeur à remplir
Type d'utilisateur Choisir :
  • Novell eDirectory si votre serveur LDAP exécute Novell eDirectory.
  • posixAccount (rfc2307) si votre serveur LDAP exécute un serveur LDAP compatible RFC-2307 (choisissez si votre serveur exécute OpenLDAP, y compris le serveur Mac OS X).
  • posixAccount (rfc2307bis) si votre serveur LDAP exécute un serveur LDAP compatible RFC-2307bis.
  • sambaSamAccount (v.3.0.7) si votre serveur LDAP fonctionne avec l'extension de schéma LDAP 3.x de SAMBA et que vous souhaitez l'utiliser.
  • MS ActiveDirectory si votre serveur LDAP exécute Active Directory de Microsoft (MS-AD)
Contextes Le DN du contexte (conteneur) où se trouvent tous vos utilisateurs Moodle. Tapez ou=moodleusers,dc=my,dc=organization,dc=domain ici.

Sur un serveur Mac OS X, il s'agit généralement de cn=users,dc=my,dc=organization,dc=domain.

Recherche de sous-contextes Si vous avez des sous-unités organisationnelles (sous-contextes) suspendues à ou=moodleusers,dc=my,dc=organization,dc=domain et que vous voulez que Moodle recherche aussi, définissez ceci sur oui. Sinon, réglez ce paramètre sur non.
Alias de déréférence Parfois, votre serveur LDAP vous dira que la valeur réelle que vous recherchez se trouve en fait dans une autre partie de l'arborescence LDAP (c'est ce qu'on appelle un alias). Si vous voulez que Moodle dé-réfère l'alias et récupère la valeur réelle à partir de l'emplacement d'origine, définissez ce paramètre sur oui. Si vous ne voulez pas que Moodle le dé-réfère, réglez ce paramètre sur non. Si vous utilisez MS-AD, réglez ce paramètre sur non.
Attribut utilisateur L'attribut utilisé pour nommer/rechercher des utilisateurs dans votre arbre LDAP. Cette option prend une valeur par défaut basée sur la valeur "Type d'utilisateur" que vous avez choisie ci-dessus. Alors à moins que vous n'ayez besoin de quelque chose de spécial, vous n'avez pas besoin de remplir ce champ .

Correction: Avec MS-AD sAMAccountName devrait être utilisé de toute façon. Avec la valeur par défaut (cn), les utilisateurs AD devront se connecter avec leur nom complet / mot de passe (Nom d'utilisateur : John Doe, Mot de passe : john's_pass). Si vous voulez permettre à vos utilisateurs de se connecter avec un nom d'utilisateur de domaine à la place (Nom d'utilisateur : johnd Mot de passe : john's_pass), vous devez utiliser sAMAccountName. Malheureusement, mais la connexion avec DOMAIN\user ou user@domain.com ne fonctionnera pas de toute façon.

Remarque : Vous pouvez envisager d'autoriser les caractères étendus dans les noms d'utilisateur dans Administration du site > Sécurité > Règles site.
Attribut du membre L'attribut utilisé pour lister les membres d'un groupe donné. Cette option prend une valeur par défaut basée sur la valeur "Type d'utilisateur" que vous avez choisie ci-dessus. Alors à moins que vous n'ayez besoin de quelque chose de spécial, vous n'avez pas besoin de remplir ce champ.

D'ailleurs, les valeurs habituelles sont membe et memberUid.

L'attribut membre utilise dn Que l'attribut membre contienne des noms distingués (1) ou non (0), cette option prend une valeur par défaut basée sur la valeur " Type d'utilisateur " que vous avez choisie ci-dessus. Alors à moins que vous n'ayez besoin de quelque chose de spécial, vous n'avez pas besoin de remplir ce champ.
Classe d'objets Type d'objet LDAP utilisé pour rechercher des utilisateurs. Cette option prend une valeur par défaut basée sur la valeur " Type d'utilisateur " que vous avez choisie ci-dessus. Alors à moins que vous n'ayez besoin de quelque chose de spécial, vous n'avez pas besoin de remplir ce champ.
  • Si vous laissez ce champ vide, la valeur par défaut basée sur le "Type d'utilisateur" sélectionné ci-dessus sera utilisée (voir ci-dessous).
  • Si vous fournissez "objectClass=some-string", alors il fournira "(objectClass=some-string)" comme filtre.
  • Si vous fournissez une valeur qui ne commence pas par "(", elle est supposée être une valeur qui doit être définie à "objectClass". Donc si vous fournissez "somee-string", alors il fournira "(objectClass=some-string)" comme filtre.
  • Si vous fournissez une chaîne qui commence par un "(", alors elle passera en l'état. Donc si vous fournissez "(&(objectClass=user)(enabledMoodleUser=1))", alors il passera cela comme filtre.

Remarque: Dans ce dernier cas, cette fonctionnalité peut être utilisée sur les logins interactifs,

Voici les valeurs par défaut pour chacune des valeurs ldap_user_type :

  • (objectClass=user) pour Novell eDirectory
  • (objectClass=posixAccount) pour RFC-2037 et RFC-2037bis
  • (objectClass=sambaSamAccount) pour l'extension SAMBA 3.0.x LDAP
  • (objectClass=user) pour MS-AD
  • (objectClass=*) par défaut

Si vous obtenez une erreur à propos d'un problème de mise à jour du serveur ldap (même si vous avez spécifié de ne pas écrire les changements sur le serveur ldap), essayez de régler la classe d'objets ldap sur * - voir http://moodle.org/mod/forum/discuss.php?d=70566 pour une discussion sur ce problème.

Forcer le changement de mot de passe

Nom du champ Valeur à remplir
Forcer le changement de mot de passe REMARQUE: Ce paramètre n'est utilisé que lors de la création de vos utilisateurs avec la tâche de synchronisation LDAP. Il n'est pas utilisé si vos utilisateurs sont créés lors de leur première connexion à Moodle.

Définissez ce paramètre sur Oui si vous voulez forcer vos utilisateurs à changer leur mot de passe lors de la première connexion à Moodle. Sinon, réglez ce paramètre sur non. Gardez à l'esprit que le mot de passe qu'ils sont obligés de changer est celui stocké sur votre serveur LDAP.

Comme vous ne voulez pas que vos utilisateurs changent leurs mots de passe lors de leur première connexion, laissez ce paramètre à Non.

Utiliser la page standard de modification du mot de passe
  • En réglant ce paramètre sur Oui, Moodle utilise sa propre page de changement de mot de passe standard, chaque fois que les utilisateurs veulent changer leur mot de passe.
  • En réglant ce paramètre sur Non, Moodle utilise la page spécifiée dans le champ appelé "URL de changement de mot de passe" (voir ci-dessous).

Gardez à l'esprit que changer vos mots de passe LDAP depuis Moodle peut nécessiter une connexion LDAPS (c'est en fait une exigence pour MS-AD). En outre, l'utilisateur bind spécifié ci-dessus doit avoir les droits nécessaires pour changer les mots de passe des autres utilisateurs.

De plus, le code pour changer les mots de passe de Moodle pour tout sauf Novell eDirectory et Active Directory n'est presque pas testé, donc cela peut fonctionner ou non pour d'autres serveurs LDAP.

Format du mot de passe Indiquez comment le nouveau mot de passe est crypté avant de l'envoyer au serveur LDAP : Texte brut, hachage MD5 ou hachage SHA-1. MS-AD utilise du texte brut, par exemple.
URL de changement de mot de passe Ici, vous pouvez spécifier un emplacement où vos utilisateurs peuvent récupérer ou modifier leur nom d'utilisateur/mot de passe s'ils l'ont oublié. Ceci sera fourni aux utilisateurs sous la forme d'un bouton sur la page de connexion et leur page d'utilisateur. Si vous laissez ce champ vide, le bouton ne sera pas imprimé.

LDAP password expiration settings

Nom du champ Valeur à remplir
Expiration
  • Si vous réglez ce paramètre sur Non, Moodle ne vérifiera pas si le mot de passe de l'utilisateur est expiré ou non.
  • Si vous réglez ce paramètre sur LDAP, Moodle vérifiera si le mot de passe LDAP de l'utilisateur a expiré ou non, et l'avertira quelques jours avant que le mot de passe n'expire. Lorsque le mot de passe a expiré, un message "Votre mot de passe a expiré" s'affiche et si l'utilisateur a la capacité de changer son mot de passe depuis Moodle, il a la possibilité de le faire.

Le code actuel ne concerne que les serveurs Novell eDirectory, LDAP et MS-AD.

Donc, à moins que vous n'ayez un serveur Novell eDirectory ou MS-AD, choisissez Non ici.

Avertissement d'expiration Cette valeur définit combien de jours avant l'expiration du mot de passe l'utilisateur est averti que son mot de passe est sur le point d'expirer.
Attribut d'expiration L'attribut utilisateur LDAP utilisé pour vérifier l'expiration du mot de passe. Cette option prend une valeur par défaut basée sur la valeur "Type d'utilisateur" que vous avez choisie ci-dessus. Alors à moins que vous n'ayez besoin de quelque chose de spécial, vous n'avez pas besoin de remplir ce champ.
Grace login Ce paramètre est spécifique à Novell eDirectory. Si ce paramètre a la valeur Oui, activez la prise en charge de l'authentification LDAP. Après l'expiration du mot de passe, l'utilisateur peut se connecter jusqu'à ce que le compteur gracelogin est 0.

Ainsi, à moins que vous ne disposiez d'un serveur Novell eDirectory et que vous souhaitiez autoriser le support de gracelogin, choisissez Non ici.

Attribut Grace login Ce paramètre n'est actuellement pas utilisé dans le code (et est spécifique à Novell eDirectory).

Vous n'avez donc pas besoin de remplir ce champ.

Permettre la création d'utilisateurs

Nom du champ Valeur à remplir
Créer des utilisateurs en externe Les nouveaux utilisateurs (anonymes) peuvent créer eux-mêmes des comptes utilisateurs sur le serveur LDAP externe et les confirmer par e-mail. Si vous activez cette option, n'oubliez pas de configurer également les options spécifiques aux modules pour la création d'utilisateurs et de remplir certaines instructions dans le champ auth_instructions du champ Administration du site > Plugins > Authentification > Gestion de l'authentification. Sinon, les nouveaux utilisateurs ne pourront pas créer eux-mêmes de nouveaux comptes.

Novell eDirectory et MS-AD peuvent créer des utilisateurs externes. Vous pouvez également créer des utilisateurs dans des serveurs compatibles RFC-2307.

Contexte pour les nouveaux utilisateurs Spécifiez le contexte dans lequel les utilisateurs sont créés. Ce contexte devrait être différent de celui des autres utilisateurs afin de prévenir les problèmes de sécurité.

Attribution des rôles système

Nom du champ Valeur à remplir
Mappage des rôles système Cette section liste tous les rôles qui peuvent être attribués dans le contexte Système, par défaut, il s'agira du "Contexte gestionnaire" et du "Contexte créateur de cours", mais peuvent être personnalisés dans la section Création de rôles personnalisés.

Pour affecter des utilisateurs LDAP à l'un des rôles, spécifiez le DN contenant tous les utilisateurs auxquels ce rôle doit être attribué au niveau système.

Ce DN est typiquement un posixGroup avec un attribut "memberUid" pour chaque utilisateur que vous voulez créer. Si votre groupe s'appelle créateurs, tapez ici cn=créateurs,ou=moodleusers,dc=my,dc=organization,dc=domain. Chaque attribut memberUid contient le CN d'un utilisateur autorisé à être créateur. N'utilisez pas le nom de domaine complet de l'utilisateur (par exemple, pas memberUid : cn=JoeTeacher,ou=moodleusers,dc-my,dc=organizations,dc=domain, mais plutôt memberUid : JoeTeacher).

Dans eDirectory, l'objectClass d'un groupe n'est pas (par défaut) "'posixGroup'" mais '"groupOfNames'" dont l'attribut membre est "'member'", pas "'memberUid'" et dont la valeur est le DN complet de l'utilisateur en question. Bien que vous puissiez probablement modifier le code de Moodle pour utiliser ce champ, une meilleure solution est d'ajouter un nouvel attribut objectClass de posixGroup à votre groupe de créateurs et de mettre les CN pour chaque créateur dans un attribut memberUid.

Dans MS Active Directory, vous devrez créer un groupe de sécurité dont vos créateurs feront partie, puis les ajouter tous. Si votre contexte ldap ci-dessus est "ou=staff,dc=my,dc=org" alors votre groupe devrait être "cn=creators,ou=staff,dc=my,dc=org". Si certains utilisateurs proviennent d'autres contextes et ont été ajoutés au même groupe de sécurité, vous devrez les ajouter comme contextes séparés après le premier en utilisant le même format.

Cette section remplace la section "Créateur de cours" de Moodle 3.3. Le processus de mise à niveau doit migrer tout DN spécifié vers la nouvelle approche.

User account syncronisation

Nom du champ Valeur à remplir
Utilisateur externe supprimé Spécifiez ce qu'il faut faire avec le compte utilisateur interne pendant la synchronisation de masse lorsque l'utilisateur a été supprimé de la source externe. Seuls les utilisateurs suspendus sont automatiquement réactivés s'ils réapparaissent en source externe.

NTLM SSO

Nom du champ Valeur à remplir
Activer Si vous voulez utiliser NTLM SSO (voir les détails à Authentification NTLM), choisissez Oui ici. Sinon, choisissez Non.
Subnet Spécifiez les sous-réseaux des clients qui utiliseront NTLM SSO (voir détails à Authentification NTLM).
MS IE Voie rapide ? Si tous vos clients (ou la plupart d'entre eux) utilisent MS Internet Explorer, vous pouvez définir cette option pour contourner certaines étapes de la connexion SSO et accélérer les temps de connexion. Ceci ne fonctionne qu'avec MS Internet Explorer, mais traite les autres navigateurs d'une manière raisonnable (ils sont automatiquement envoyés à la page de connexion simple).

Mappage de données

Nom du champ Valeur à remplir
Prénom Le nom de l'attribut qui contient le prénom de vos utilisateurs dans votre serveur LDAP. Il s'agit généralement de givenName ou displayName.

Ce réglage est optionnel

Nom de famille Le nom de l'attribut qui contient le nom de famille de vos utilisateurs dans votre serveur LDAP. C'est généralement sn.

Ce réglage est optionnel

Adresse de courriel Le nom de l'attribut qui contient l'adresse de courriel de vos utilisateurs dans votre serveur LDAP. C'est généralement mail.

Ce réglage est optionnel

Ville/village Le nom de l'attribut qui contient la ville de vos utilisateurs dans votre serveur LDAP. C'est généralement l. (L minuscule) ou localityName (non valide dans MS-AD).

Ce réglage est optionnel

Pays Le nom de l'attribut qui contient le pays de vos utilisateurs dans votre serveur LDAP. C'est généralement c ou countryName (non valide dans MS-AD).

Ce réglage est optionnel

Langue preferredLanguage

Ce réglage est optionnel

Description description

Ce réglage est optionnel

Webpage Ce réglage est optionnel
ID Number

Ce réglage est optionnel

Institution

Ce réglage est optionnel

Département Le nom de l'attribut qui contient le nom du département de vos utilisateurs dans votre serveur LDAP. C'est généralement departmentNumber (pour posixAccount et peut-être eDirectory) ou department (pour MS-AD).

Ce réglage est optionnel

Téléphone 1 Le nom de l'attribut qui contient le numéro de téléphone de vos utilisateurs dans votre serveur LDAP. Il s'agit habituellement du numéro de téléphone.

Ce réglage est optionnel

Téléphone 2 Le nom de l'attribut qui contient un numéro de téléphone supplémentaire de vos utilisateurs dans votre serveur LDAP. Il peut s'agir de homePhone,mobile,pager,facsimileTelephoneNumber ou même d'autres.

Ce réglage est optionnel

Adresse Le nom de l'attribut qui contient l'adresse municipale de vos utilisateurs dans votre serveur LDAP. C'est généralement streetAddress ou street.

Ce réglage est optionnel

Champs de profil utilisateur personnalisé

Tous les champs de profil utilisateur créés dans Administration du site > Utilisateurs > Comptes > Champs de profil utilisateur devraient maintenant apparaître automatiquement à la fin de la liste des champs de mappage des données après le champ Adresse. Voir l'exemple :

Customprofil.png.

Activation de la tâche de synchronisation des utilisateurs LDAP

Le travail de synchronisation des utilisateurs LDAP (\auth_ldap\task\sync_task) Tâche planifiée (nouveau dans Moodle 3.0 ; auparavant il y avait un script CLI, voir MDL-51824 pour plus d'informations) est responsable de créer et mettre à jour les informations utilisateur, suspendre et supprimer des comptes LDAP.

Après avoir activé l'authentification du serveur LDAP, un administrateur doit activer et configurer la tâche de synchronisation des utilisateurs LDAP comme suit :

  1. Allez dans Administration du site > Serveur > Tâches planifiées et cliquez sur l'icône d'équipement en face du travail de synchronisation des utilisateurs LDAP.
  2. Sélectionnez la fréquence d'exécution souhaitée et activez la tâche en décochant la case à cocher désactivée.
Avertissement ! Il est important de s'assurer que tous les paramètres LDAP fonctionnent correctement avant d'activer le travail de synchronisation des utilisateurs LDAP (ainsi que de sauvegarder votre base de données et vos dossiers de données moodledata), car une configuration LDAP incorrecte peut entraîner la suppression erronée des utilisateurs!

.

Si vous constatez que le script ne fonctionne pas correctement avec tous vos utilisateurs et que vous avez plus de 1000 utilisateurs dans chaque conteneur LDAP, c'est parce que, par défaut, certaines mémoires LDAP tels que MS AD ne renvoient que 1000 utilisateurs à la fois et les versions PHP antérieures à 5.4 ne prenaient pas en charge les résultats LDAP pagés. Si vous mettez à jour vers PHP 5.4 ou supérieur, Moodle obtiendra tous vos utilisateurs correctement. Si vous ne pouvez pas mettre à niveau vers PHP 5.4, vous pouvez suivre les instructions de http://support.microsoft.com/kb/315071 pour régler le paramètre Active Directory MaxPageSize à un nombre supérieur à votre nombre total d'utilisateurs (actuel et futur) pour le corriger. Il s'agit d'un cadre forestier.

Aide Active Directory

Active Directory est le service annuaire de Microsoft. Il est inclus dans Windows 2000 Server et les versions ultérieures de leur système d'exploitation. Pour plus d'informations sur les sujets ci-dessous, veuillez consulter cette page.

  • Avertissement: Le module PHP LDAP ne semble pas être présent
  • Le module LDAP ne peut connecter aucun serveur LDAP
  • Obtenir des NC corrects pour les contextes et les créateurs
  • Obtenir le bon user_attribute
  • Installation de l'outil serveur ldp.exe
  • Exemple de configuration Active Directory
  • Le Child Domain et le Global catalog dans MS Active Directory
  • Activation du Global Catalog
  • Active Directory avec Moodle 1.8
  • MS Active Directory + SSL

Scénarios avancés, Serveurs ou emplacements multiples

Pour les grandes installations avec plusieurs serveurs LDAP ou plusieurs emplacements (contextes) dans une arborescence LDAP.

Rendre votre connexion LDAP directory résiliente

  • Entrer plus d'un nom dans le champ ldap_host_url peut fournir une sorte de résilience à votre système. Utilisez simplement la syntaxe :
ldap://my.first.server; ldap://my.second.server; ...

Bien sûr, cela ne fonctionnera que si tous les serveurs partagent les mêmes informations d'annuaire, si vous utilisez eDirectory, vous devez vous assurer que vos serveurs ont la viabilité de toutes les partitions arborescentes pertinentes, ou si vous utilisez Active Directory, les serveurs contiennent les mêmes informations dont vous avez besoin par réplication, voir notes sur un environnement multi-domaines si cela est nécessaire.

Il y a un inconvénient dans l'implémentation de Moodle 1.5 - 1.6 de l'authentification LDAP : la fonction auth_ldap_connect() traite les serveurs séquentiellement, et non en mode round robin. Ainsi, si le serveur primaire tombe en panne, vous devrez attendre que la connexion soit terminée avant de passer au serveur suivant.

Voir aussi le forum de discussion : Utilisation de plusieurs serveurs LDAP, Nos étudiants sont sur un domaine séparé

Utilisation d'un environnement multi-domaines AD

  • Si vous exécutez Active Directory avec plusieurs domaines et que vous avez des utilisateurs dans plus d'un domaine, vous voudrez configurer Moodle pour qu'il regarde votre serveur Global Catalog. En particulier, le serveur Global Catalog de votre domaine de premier niveau. Voici un exemple simple de ce type de disposition d'Active Directory :
my.domain.ca (Root AD Domain)
| - dc1.my.domain.ca (Domain Controller)
| - dc2.my.domain.ca (Domain Controller)
|
| - - students.my.domain.ca (Sub AD Domain)
| - - - dc1.students.my.domain.ca (Domain Controller)
| - - - dc2.students.my.domain.ca (Domain Controller)
|
| - - faculty.my.domain.ca (Sub AD Domain)
| - - - dc1.faculty.my.domain.ca (Domain Controller)
| - - - dc2.faculty.my.domain.ca (Domain Controller)

Dans cet exemple, nous avons notre domaine de premier niveau (my.domain.ca) et deux sous-domaines. Un sous-domaine est pour les comptes des professeurs (faculty.my.domain.ca) et l'autre est pour les comptes des étudiants (students.my.domain.ca). Deux contrôleurs de domaine sont répertoriés sous chacun d'eux.

En utilisant l'exemple ci-dessus, vous voudrez utiliser ce qui suit pour accéder au Global Catalog sous SSL :

ldaps://my.domain.ca:3269/

Si vous préférez accéder à votre catalogue global par une connexion non-SSL, vous voudrez utiliser:

ldap://my.domain.ca:3268/

Nous avons trouvé que si vous ne configuriez pas les choses de cette façon, vous auriez des erreurs comme :

 [Thu May 26 15:23:53 2011] [error] [client 192.168.xxx.xxx] PHP Avertissement:  ldap_search() [<a href='function.ldap-search'>function.ldap-search</a>]: Recherche: Résultats partiels et signalements reçus en /xxx/xxx/moodle20/lib/ldaplib.php sur la ligne 241, référent : http://moodle.my.domain.ca/moodle20/login/index.php
 [Thu May 26 15:23:53 2011] [error] [client 192.168.xxx.xxx] PHP Avertissement :  ldap_first_entry(): n'est pas une ressource de résultat ldap valide dans le fichier /xxx/xxx/moodle20/lib/ldaplib.php sur la ligne 248, référent : http://moodle.my.domain.ca/moodle20/login/index.php

Utilisation de plusieurs emplacements utilisateurs (contextes) dans votre arborescence LDAP

Il n'est pas nécessaire d'utiliser plusieurs emplacements utilisateurs si votre arborescence de répertoire est plate, c'est-à-dire si tous les comptes utilisateurs résident dans un conteneur ou=people,dc=my,dc=organization,dc=domain ou ou=people,o=myorg.

A l'inverse, si vous utilisez le mécanisme ACL pour déléguer la gestion des utilisateurs, il y a des chances que vos utilisateurs soient stockés dans des conteneurs tels que ou=students,ou=dept1,o=myorg et ou=students,ou=dept2,o=myorg...

Alors il y a une alternative :

  • Regardez le niveau o=myorg avec l'attribut ldap_search_sub défini sur oui.
  • Définissez le contexte_ldap à ou=students,ou=dept1,o=myorg ; ou=students,ou=dept2,o=myorg.

Choisir entre ces deux solutions suppose une sorte de benchmarking, car le résultat dépend fortement de la structure de votre arborescence d'annuaires et de vos capacités d'indexation de logiciels LDAP. Notez simplement qu'il y a une probabilité dans des arborescences si profondes que deux utilisateurs partagent le même "nom commun" (cn), tout en ayant des "noms distinctifs" différents. Seule la deuxième solution aura alors un résultat déterministe (renvoyant toujours le même utilisateur).

Utilisation de LDAPS (LDAP sur SSL)

Activer LDAPS sur votre directory serveur

Activer LDAPS sur votre serveur Moodle

L'activation de LDAPS sur votre serveur peut s'avérer délicate et il est souvent difficile d'identifier les points faibles. Il y a aussi des différences entre Windows et Linux et même entre les différentes versions et distributions de Linux.

Si vous ne l'avez pas déjà fait, vous devrez décider de votre approche pour établir une connexion SSL à votre serveur d'annuaire :

  • Connexion SSL avec certificat auto-signé non vérifié.

Vous pouvez générer votre propre certificat SSL, puis demander à votre serveur Moodle d'ignorer qu'il n'est pas valide. Cette configuration n'est pas aussi sûre que les autres car vous ne pouvez pas être sûr que le serveur auquel vous vous connectez n'est pas faux.

  • Connexion SSL avec certificat auto-signé de confiance.

Vous pouvez générer votre propre certificat SSL sur votre directory serveur, puis faire spécifiquement confiance à ce certificat en l'installant sur votre serveur Moodle.

  • Connexion SSL avec certificat vérifié par une autorité de certification de confiance Internet (CA)

Dans cette approche, le serveur LDAP possède un certificat installé par une autorité de certification basée sur Internet, ce qui signifie que votre serveur d'annuaire aurait une adresse Internet et un nom d'hôte. Votre serveur Moodle doit faire confiance à l'autorité de certification et avoir un accès Internet. Cette approche n'est pas souvent utilisée car elle entraîne généralement un coût pour le certificat, et elle nécessite que votre serveur d'annuaire et votre serveur Moodle soient exposés à Internet.

Serveur Linux

Ces instructions servent à établir un lien à l'aide d'un certificat auto-signé de confiance.

Remarque: écrites pour un serveur Red Hat Enterprise Linux 6, les autres distributions Linux peuvent différer, notamment en ce qui concerne l'emplacement des certificats SSL et des fichiers de configuration OpenLdap, mais les principes fondamentaux sont les mêmes.

Pour vérifier que votre serveur d'annuaire est en ligne et accepte les connexions SSL sur votre port LDAPS (636), vous pouvez utiliser try :

openssl s_client –connect <ldap server ip address>:636

Obtenez le certificat de votre directory serveur (.crt) et téléchargez dans le directory certificats SSL du serveur Moodle, sur RHEL6 c'est au /etc/ssl/certs

Convertissez votre certificat "DER" X509 en certificat de clé publique "PEM".

openssl x509 -in my_server_certificate.cer -inform DER -out my_server_certificate.pem -outform PEM

Créer des hachages de certificats à l'aide de c_rehash

c_rehash

If c_rehash is not installed install with: yum install /usr/bin/c_rehash

Assurez-vous que vous pouvez accéder à votre serveur LDAPS par un nom DNS, cela peut signifier ajouter une entrée à votre fichier hôte (/etc/hosts).

<ldap server ip address>    my_server.mydomain.school

Vérifier votre certificat pour vérifier qu'il est correctement installé

openssl verify -verbose -CApath /etc/ssl/certs /etc/ssl/certs/my_server_certificate.pem
/etc/ssl/certs/my_server_certificate.pem: OK

Vous devriez maintenant pouvoir vous connecter à votre serveur LDAPS via SSL sans aucune erreur

openssl s_client –connect <ldap server DNS name>:636

Editez votre configuration OpenLDAP, sur RHEL6 elle se trouve à l'adresse suivante /etc/openldap/ldap.conf

# Définir l'emplacement d'un CA Cert
TLS_CACERT /etc/ssl/certs/my_server_certificate.pem
TLS_CACERTDIR /etc/ssl/certs

Enfin, vous pouvez ou non avoir besoin de redémarrer Apache, avant de configurer Moodle pour utiliser ldaps ://<server DNS name>

httpd -k restart

Serveurs Windows

Ces instructions servent à établir un lien à l'aide d'un certificat auto-signé non vérifié.

Vous pouvez indiquer à l'extension OpenLDAP de PHP de désactiver la vérification du certificat de serveur SSL pour ce faire, vous devez créer un répertoire appelé C:\OpenLDAP\sysconf\ Dans ce répertoire, créer un fichier appelé ldap.conf avec le contenu suivant :

TLS_REQCERT never

(Si vous utilisez certaines versions de PHP 5.3.x, vous devrez peut-être placer le fichier à d'autres emplacements, voir PHP bogue #48866)

Vous devriez maintenant pouvoir utiliser ldaps:// lors de la connexion à votre serveur LDAP.

Annexes

Définition des limites de ressources du serveur RedHat Directory

Les attributs opérationnels peuvent être définis pour le DN utilisateur de liaison à l'aide de la ligne de commande. On peut simplement utiliser ldapmodify pour ajouter les attributs suivants :

Nom de l'attribut Description
nsLookThroughLimit Indique le nombre de données examinées pour une opération de recherche. Le fait de donner à cet attribut une valeur de -1 indique qu'il n'y a pas de limite.
nsSizeLimit Spécifie le nombre maximum de données que le serveur renvoie à une application client en réponse à une opération de recherche. Le fait de donner à cet attribut une valeur de -1 indique qu'il n'y a pas de limite.
nsTimeLimit Spécifie le temps maximum que le serveur passe à traiter une opération de recherche. Le fait de donner à cet attribut une valeur de -1 indique qu'il n'y a pas de limite de temps.
nsIdleTimeout Indique le temps pendant lequel une connexion au serveur peut être inactive avant que la connexion ne soit interrompue. La valeur est donnée en secondes. Le fait de donner à cet attribut une valeur de -1 indique qu'il n'y a pas de limite.
 LDAP Console Command-Line

 ldapmodify -h redhat_dir_server -p 389 -D "cn=directory manager" -w secretpwd

 dn: uid=MoodleAdmin,ou=system,dc=myschool,dc=edu
 changetype: modify
 add:nsSizeLimit
 nsSizeLimit: 1000
 

D'autres questions ?

N'hésitez pas à poster sur le forum d'authentification sur moodle.org.

Voir aussi

Forum de discussions: