Vorlage:Zum Übersetzen Diese Authentifizierungsmethode verwendet einen LDAP-Server, um zu prüfen, ob die Anmeldedaten eines Nutzers (Anmeldename / Kennwort) gültig sind.

Dieser Artikel beschreibt, wie die Authentifizierung über LDAP konfiguriert wird. Wir gehen zunächst von einem Basisszenario aus, betrachten dann ein erweitertes Szenario und zeigen abschließend, wie man mit möglichen Fehlerfällen umgehen kann.

Aktivierung

Die Aktivierung der Authentifizierung über einen LDAP-Server erfolgt auf der Seite Einstellungen > Website-Administration > Plugins > Authentifizierung > Übersicht.

Klicken Sie in der Liste auf das geschlossene Auge-Symbol Datei:show.gif in der Zeile LDAP-Server.

Spezifische Einstellungen

Spezifische Einstellungen für die Authentifizierung über LDAP nehmen Sie auf der Seite Einstellungen > Website-Administration > Plugins > Authentifizierung > LDAP-Server vor.

Das folgende Basisszenario entspricht einer einfachen Grundkonfiguration, die für die meisten Installation geeignet ist. Nehmen wir beispielhaft folgende Voraussetzungen an: Ihre Moodle-Installation ist über http://your.moodle.site/ erreichbar.

  1. Sie haben auf dem Moodle-Server PHP inklusive der LDAP-Erweiterung installiert und aktiviert, und dies wird unter http://your.moodle.site/admin/phpinfo.php angezeigt, wenn Sie sich als Administrator in Moodle anmelden.
  2. Ihr LDAP-Server hat die IP-Adresse 192.168.1.100.
  3. Sie verwenden kein LDAP mit SSL (auch bekannt als ldaps).
  4. Sie möchten nicht, dass Nutzer beim ersten Login in Moodle ihr Kennwort ändern.
  5. Sie verwenden eine einzige Domain als Quelle für ihre Authentifizierungsdaten im Fall, dass Sie das MS Active Directory verwenden.
  6. Sie verwenden den DN-Namen dc=my,dc=organization,dc=domain als Wurzel Ihres LDAP-Baums.
  7. Sie haben einen Bind-Nutzer, der die Verbindung zum LDAP-Server aufnimmt. Stellen Sie sicher, das Nutzername und Kennwort dieses Bind-Nutzers dauerhaft gültig sind, und verwendet Sie ein möglichst starkes Kennwort. Sie müssen dieses Kennwort nur einmal bei der Konfiguration der LDAP-Authentifizierung angeben. Der Anmeldename dieses Bind-Nutzers sei in unserem Basisszenario cn=ldap-user,dc=my,dc=organization,dc=domain, und das Kennwort sei ein_ganz_starkes_Kennwort.
  8. Alle Moodle-Nutzer gehören zu einer Organisationseinheit (OU), die moodleusers heißt und direkt unterhalb der Wurzel des LDAP-Baums liegt. Diese Organsiationseinheit hat den DN-Namen ou=moodleusers,dc=my,dc=organization,dc=domain.
  9. Sie möchten nicht, dass die LDAP-Kennwörter Ihrer Nutzer in der Moodle-Datenbank gespeichert werden.

Im folgenden beschreiben wir, welche spezifischen Einstellungen Sie für dieses Basisszenario vornehmen müssen.

LDAP Server-Einstellungen

Host URL

Wenn die IP-Adresse Ihres LDAP-Servers 192.168.1.100 ist, geben Sie folgendes ein: ldap://192.168.1.100 oder einfach 192.168.1.100 (manche Nutzer haben Probleme mit der ersten Variante, insbesondere bei MS Windows Servern).

Version

Normalerweise ist die Version 3 die richtige, es sei denn, Sie verwenden einen uralten LDAP-Server.

Codierung

Geben Sie die Kodierung des LDAP-Servers an. Meistens ist das utf-8.

Bind-Einstellungen

Kennworte verbergen

Wenn keine Nutzerkennwörter in der Moodle-Datenbank gespeichert werden sollen, dann wählen Sie hier Ja.

Anmeldename

Geben Sie hier den Namen des oben definierten Bind-Nutzers ein, z.B. cn=ldap-user,dc=my,dc=organization,dc=domain (ohne Anführungszeichen).

Kennwort

Geben Sie hier das Passwort des Bind-Nutzers ein. Verwenden Sie ein starkes Passwort (mindestens 8 Zeichen, 1 Ziffer, 1 Großbuchstabe, 1 Kleinbuchstabe, 1 Sonderzeichen)!

Nutzersuche (user lookup)

Nutzertyp

  • Novell Edirectory - wenn Ihr LDAP-Server Novell's eDirectory verwendet
  • posixAccount (rfc2307) - wenn Ihr LDAP-Server einen RFC-2307-kompatiblen LDAP-Server verwendet (wählen Sie diese Einstellung, wenn Ihr Server OpenLDAP verwendet)
  • posixAccount (rfc2307bis) - wenn Ihr LDAP-Server einen RFC-2307bis-kompatiblen LDAP-Server verwendet
  • sambaSamAccount (v.3.0.7) - wenn Ihr LDAP-Server mit der SAMBA 3.x LDAP Schema Erweiterung läuft und Sie diese verwenden wollen
  • MS ActiveDirectory wenn Ihr LDAP-Server das Microsoft Active Directory (MS-AD) verwendet

Kontexte

DN-Angabe des Kontexts (der Umgebung, des Containers), wo Ihre Moodle-Nutzer abgelegt sind. Geben Sie etwa folgendes ein: ou=moodleusers,dc=my,dc=organization,dc=domain.

Subkontexte

Wenn Sie Unterorganisationseinheiten (Subkontexte) unterhalb von ou=moodleusers,dc=my,dc=organization,dc=domain haben und Moodle diese durchsuchen soll, dann wählen Sie hier Ja. Andernfalls wählen Sie Nein.

Alias berücksichtigen

Manchmal teilt Ihnen Ihr LDAP-Server mit, das der tatsächliche Wert, nach dem Sie suchen, in einem anderen Zweig des LDAP-Baumes liegt (das nennt man Alias). Wenn Sie möchten, dass Moodle diesen Alias auflöst und den Wert aus dem tatsächlichen Ort innerhalb des LDAP-Baumes abruft, dann wählen Sie Ja. Andernfalls wählen Sie Nein. Wenn Sie das Microsoft Active Directory (MS-AD) verwenden, wählen Sie ebenfalls Nein.

Nutzermerkmal

Optional: Geben Sie hier das Attribut an, das Ihr LDAP-Baum verwendet, um Nutzer zu benennen oder zu suchen. Moodle verwendet einen Standardwert, basierend auf dem Nutzertyp, den Sie weiter oben angegeben haben. Normalerweise ist der Wert cn (Novell eDirectory und MS-AD) oder uid (RFC-2037, RFC-2037bis und SAMBA 3.x LDAP Erweiterung). Wenn Sie MS-AD verwenden, können Sie auch sAMAccountName (der Vor-Windows_2000-Loginname) eintragen.

Mitgliedsmerkmal

Optional: Das ist das Attribut, um Nutzer einer gegebenen Gruppe zu kennzeichnen. Moodle verwendet einen Standardwert, basierend auf dem Nutzertyp, den Sie weiter oben angegeben haben. Normalerweise ist der Wert member oder memberUid.

Mitgliedsmerkmal nutzt dn

Optional: Geben Sie eine 1 ein, falls Ihr Mitgliedsattribut ausgezeichnete Namen enthält. Andernfalls geben Sie 0 ein oder lassen das Feld leer.

ObjectClass

Optional: Hier geben Sie den LDAP-Objekttyp an, der für die Suche nach Nutzern verwendet wird. Moodle verwendet einen Standardwert, basierend auf dem Nutzertyp, den Sie weiter oben angegeben haben. Die Standardwerte für ldap_user_type sind:

  • User für Novell eDirectory
  • posixAccount für RFC-2037 und RFC-2037bis
  • sambaSamAccount für SAMBA 3.0.x LDAP Erweiterung
  • user für Microsoft Active Directory (MS-AD)

Siehe auch Diskussionsbeitrag auf moodle.org

Kennwortänderung verlangen

Kennwortänderung verlangen

Wählen Sie hier Ja, dann werden Nutzer beim erstmaligen Anmelden in Moodle aufgefordert, ihr Kennwort zu ändern. Denken Sie daran, das dann das Kennwort geändert wird, das im LDAP-Server hinterlegt ist.

Standardseite zur Kennwortänderung nutzen

Wenn Sie diese Einstellung auf Ja setzen, dann verwendet Moodle seine interne Kennwortänderungsseite, und zwar jedes Mal, wenn ein Nutzer sein Kennwort ändern möchte.

Wenn Sie die Einstellung auf Nein setzen, dann verwendet Moodle eine spezielle externe Kennwortänderungsseite, die Sie unter URL zur Kennwortänderung angeben können (siehe unten).

Beachten Sie, dass eine Änderung der LDAP-Kennwörter evtl. eine sichere ldaps-Verbindung erfordert. Außerdem muss der weiter oben angegebene Bind-Nutzer die entsprechenden Rechte haben, Nutzerkennwörter zu ändern.

Desweiteren ist der Code zur Kennwortänderung nur bedingt getestet. Er funktioniert für LDAP-Server, die das Novell eDirectory oder das Microsoft Active Directory verwenden. Bei anderen LDAP-Servern kann es sein, das die Kennwortänderung nicht funktioniert.

Kennwortformat

Geben Sie hier an, wie neue Kennwörter verschlüsselt werden, bevor sie zum LDAP-Server gesendet werden. Mögliche Optionen sind: Reiner Text, MD5-Verschlüsselung oder SHA-1 hash.

URL zur Kennwortänderung

Hier können Sie eine externe Seite zur Kennwortänderung angeben, auf der Nutzer ihr Kennwort ändern oder ein neues anfordern können. Wenn Sie hier einen Eintrag vornehmen, dann erscheint im Moodle-Nutzerprofil ein Button Kennwort ändern.

Gültigkeitsablauf von Kennworten

Gültigkeitsende

|

  • Wenn Sie diese Option auf Nein setzen, prüft Moodle nicht, ob die Gültigkeitsdauer des Kennworts abgelaufen ist.
  • Wenn Sie diese Option auf LDAP setzen, prüft Moodle, ob die Gültigkeitsdauer des LDAP-Kennwort abgelaufen ist und verschickt ggf. eine Warnmeldung.

Warnung zum Gültigkeitsende

Mit dieser Zahl legen Sie fest, wie viele Tage vor Ablauf der Gültigkeitsdauer eines Kennworts der Nutzer eine entsprechende Warnmeldung per E-Mail zugeschickt bekommt.

Ablauf-Attribut

Geben Sie hier das LDAP-Attribut ein, das zur Prüfung der Gültigkeitsdauer eines Kennworts verwendet wird. Diese Eingabe ist optional, wenn Sie das Feld leer lassen, wird der Standardwert verwendet.

Frist Login

Mit dieser Option können Sie die graceLogin-Funktionalität von LDAP aktivieren. graceLogin bedeutet, dass ein Nutzer auch nach Ablauf der Gültigkeitsdauer seines Kennworts noch eine bestimmte Anzahl von Versuchen hat, sich anzumelden. Bei jedem Anmeldeversuch wird diese Zahl um eins vermindert, und erst wenn der Wert gleich Null ist, wird der Zugriff endgültig verweigert.

grace Login Attribute

Geben Sie hier das LDAP-Attribut ein, das die Anzahl der Anmeldeversuche nach Ablauf der Gültigkeitsdauer des Kennworts festlegt. Diese Eingabe ist optional, wenn Sie das Feld leer lassen, wird der Standardwert verwendet.


Nutzer-Erstellung aktivieren

Nutzer extern anlegen

| New (anonymous) users can self-create user accounts on the external LDAP server and confirm them via email. If you enable this, remember to also configure module-specific options for user creation and to fill in some instructions in auth_instructions field in Administration >> Users >> Authentication >> Manage authentication. Otherwise the new users won't be able to self-create new accounts.

As of now, only Novell eDirectory and MS-AD can create users externally. |- | Kontext für neue Nutzer | Specify the context where users are created. This context should be different from other users' contexts to prevent security issues. |}

Kursverwalter/in

Name Wert
Kursverwalter/innen The DN of the group that contains all of your Moodle creators. This is typically a posixGroup with a "memberUid" attribute for each user you want to be a creator. If your group is called creators, type cn=creators,ou=moodleusers,dc=my,dc=organization,dc=domain here. Each memberUid attribute contains the CN of a user who is authorized to be a creator. Do not use the user's full DN (e.g., not memberUid: cn=JoeTeacher,ou=moodleusers,dc-my,dc=organizations,dc=domain, but rather memberUid: JoeTeacher).

In eDirectory, the objectClass for a group is (by default) not posixGroup but groupOfNames, whose member attribute is member, not memberUid, and whose value is the full DN of the user in question. Although you can probably modify Moodle's code to use this field, a better solution is just to add a new objectClass attribute of posixGroup to your creators group and put the CNs for each creator in a memberUid attribute.

In MS Active Directory, you will need to create a security group for your creators to be part of and then add them all. If your ldap context above is 'ou=staff,dc=my,dc=org' then your group should then be 'cn=creators,ou=staff,dc=my,dc=org'. If some of the users are from other contexts and have been added to the same security group, you'll have to add these as separate contexts after the first one using the same format.

Cron-Synchronisierungsskript

Name Wert
Entfernte externe Nutzer Specify what to do with internal user account during mass synchronization when user was removed from external source. Only suspended users are automatically revived if they reappear in ext source.

Setting up regular automatic synchronisation using cron

There is a script located at /auth/ldap/auth_ldap_sync_users.php which will create or suspend/delete (see the setting above) all LDAP accounts automatically. Ideally, this is called from the command line once a day during a quiet time using exactly the same procedure as the standard cron job (so you will end up with two cron entries). It is important, however, to make sure that all of the above LDAP settings are working properly before you try this, as well as backing up your database and moodledata folders. Poor LDAP configuration could lead to users being wrongly deleted.

If you find that the script is not running through all of your users properly and you have MS Active Directory + over 1000 users, this is because by default, MS AD only sends back 1000 users at a time. Follow the instructions here to set the MaxPageSize setting to a number higher than your total number of users (both now and in future) to fix it.

NTLM SSO

Name Wert
Aktivieren If you want to use NTLM SSO (see details at NTLM_authentication), choose Yes here. Otherwise, choose No.
Subnet Specify the subnets of the clients that will use NTLM SSO (see details at NTLM_authentication).

Data Mapping

Mit diesen Einstellungen legen Sie fest, wie die einzelnen Nutzerdatenfelder aus LDAP auf die Datenfelder in der Nutzertabelle der Moodle-Datenbank abgebildet werden. Diese Einstellungen sind optional.

Für jedes einzelne Datenfeld in der Nutzertabelle der Moodle-Datenbank (Vorname, Nachname, E-Mail-Adresse, Stadt/Ort, Land, etc.) können Sie folgende Einstellungen vornehmen:

  • Eingabe des Namen des zugehörigen Datenfeldes in LDAP
  • Update lokaler Daten: Mit dieser Einstellung legen Sie fest, was mit den Nutzerdaten in Moodle passieren soll, wenn sie nicht mit den entsprechenden Daten der externen Quelle übereinstimmen. Mögliche Optionen sind:
  • Beim Anlegen - beim erstmaligen Anmelden in Moodle werden die Daten aus der externen Quelle nach Moodle kopiert.
  • Bei jedem Login - bei jedem Anmelden in Moodle wird geprüft, ob die Daten aus der externen Quelle mit den Daten in Moodle übereinstimmen. Wenn das nicht der Fall ist, werden die Daten in Moodle aktualisiert.
  • Update externer Daten: Mit dieser Einstellung legen Sie fest, was mit den externen Nutzerdaten passieren soll, wenn sie nicht mit den entsprechenden Daten in Moodle übereinstimmen. Mögliche Optionen sind:
  • Nie - die Daten der externen Quelle werden nie geändert.
  • Bei der Aktualisierung - wenn die Daten in Moodle geändert wurden, werden diese Änderungen in die externe Quelle kopiert.
  • Sperrwert: Mit dieser Einstellung legen Sie fest, ob ein Nutzer das entsprechende Datenfeld in seinem Nutzerprofil in Moodle bearbeiten kann. Mögliche Optionen sind:
  • Bearbeitbar - der Nutzer kann dieses Datenfeld jederzeit bearbeiten.
  • Bearbeitbar, wenn Feld leer - der Nutzer kann dieses Datenfeld bearbeiten, wenn es leer ist.
  • Gesperrt - der Nutzer kann dieses Datenfeld nicht bearbeiten. Diese Einstellung ist sinnvoll, wenn die Nutzerdaten in der externen Quelle gepflegt werden.

Microsoft Active Directory

Microsoft Active Directory (MS-AD) ist der Verzeichnisdienst von Microsoft. Er ist im Windows 2000 Server enthalten. Detaillierte Informationen zur Konfiguration der LDAP-Authentifizierung mit MS-AD finden Sie im Artikel Microsoft Active Directory.

Advanced Scenarios - Multiple servers or locations

For larger installations with multiple LDAP servers, or multiple locations (contexts) in a LDAP tree.

Using multiple LDAP Servers

Entering more than one name in the ldap_host_url field can provide some sort of resilience to your system. Simply use the syntax : ldap://my.first.server ; ldap://my.second.server ; ...

Of course, this will only work if all the servers share the same directory information, using a replication or synchronization mecanism once introduced in eDirectory and now generalized to the main LDAP-compatible directories.

There is one drawback in Moodle 1.5 - 1.6 implementation of LDAP authentication : the auth_ldap_connect() function processes the servers sequentially, not in a round robin mode. Thus, if the primary server fails, you will have to wait for the connection to time out before switching to the following one.

Using multiple user locations (contexts) in your LDAP tree

There is no need to use multiple user locations if your directory tree is flat, i.e. if all user accounts reside in a ou=people,dc=my,dc=organization,dc=domain or ou=people,o=myorg container.

At the opposite, if you use the ACL mecanism to delegate user management, there are chances that your users will be stored in containers like ou=students,ou=dept1,o=myorg and ou=students,ou=dept2,o=myorg ...

Then there is an alternative :

  • Look at the o=myorg level with the ldap_search_sub attribute set to yes.
  • Set the ldap_context to ou=students,ou=dept1,o=myorg ; ou=students,ou=dept2,o=myorg.

Choosing between these two solutions supposes some sort of benchmarking, as the result depends heavily on the structure of your directory tree and on your LDAP software indexing capabilities. Simply note that there is a probability in such deep trees that two users share the same common name (cn), while having different distinguished names. Then only the second solution will have a deterministic result (returning allways the same user).

Using LDAPS (LDAP + SSL)

Enabling LDAPS on the LDAP server side

Enabling LDAPS on the client side (Moodle server)

  • If you are running Moodle on MS Windows, you need to tell PHP's OpenLDAP extension to disable SSL server certificate checking. You must create a directory called C:\OpenLDAP\sysconf. In this directory, create a file called ldap.conf with the following content:
TLS_REQCERT never
  • If you are running Moodle on Linux or any other Unix-like operating system, and you want to disable SSL server certificate checking, you need to edit the OpenLDAP client configuration file (usually /etc/ldap.conf or /etc/ldap/ldap.conf or even /etc/openldap/ldap.conf) and make sure you have a line like the following one:
TLS_REQCERT never

Now you should be able to use ldaps:// when connecting to your LDAP server.

If you have the certificate of the LDAPS server as a file and want to check the certificate for the connection, copy the certificate file to an arbitary directory (e.g. /etc/ldap/certificate.pem) on your client and change the content of the ldap.conf as follows:

TLS_REQCERT demand
TLS_CACERT  /etc/ldap/certificate.pem

When the requested server certificate is bad or not provided, the connection to the LDAPS server is immediately terminated.

Table of Contents


Siehe auch