LDAP-Authentifizierung¶
Einleitung¶
Mit der Erweiterung LDAP Auth authentifizierst du Benutzer an einem oder mehreren LDAP-Verzeichnisdiensten. Die Erweiterung sucht den Benutzer im Verzeichnis, prüft bei einer Passwortanmeldung dessen Kennwort und übermittelt anschließend seine LDAP-Gruppen an das Raptor-System. Sie eignet sich sowohl für allgemeine LDAP-Verzeichnisse als auch für Microsoft Active Directory.
Fakten¶
Name |
LDAP Auth |
Bezeichner |
|
Version |
1.0 |
Funktionen |
Authentifizierung |
Methoden |
|
Diagnose |
|
Arbeitsweise¶
Bei einer Anmeldung prüft die Erweiterung die Einträge aus Servers in ihrer konfigurierten Reihenfolge. Auf jedem Server sucht sie anhand von UserNameSource nach dem eingegebenen Benutzernamen. Wird der Benutzer nicht gefunden oder schlägt die Passwortprüfung fehl, versucht sie den nächsten Eintrag. Der erste erfolgreich authentifizierte Server wird anschließend auch zum Ermitteln der Gruppen verwendet.
Die Methode Password prüft das vom Benutzer eingegebene Passwort am LDAP-Server. Trust betrachtet einen gefundenen Benutzer bereits als authentifiziert und führt keine Passwortprüfung durch.
Warnung
Die Methode Trust darf nur in einem bereits zuverlässig authentifizierten und vertrauenswürdigen Anmeldeweg verwendet werden. Würde ein gewöhnlicher Client diese Methode frei auswählen können, genügte die Kenntnis eines vorhandenen Benutzernamens für eine erfolgreiche Anmeldung. Verwende für normale interaktive Anmeldungen immer Password.
Konfiguration¶
Das Konfigurationsschema¶
Module
LdapAuth
List
Complex list definition
Must not be empty.
Must match this regular expression:
[-_a-z0-9]+Maximum length:
128
Must not be empty.
Default Value:
true
Must be one of this:
cn,distinguishedName,employeeID,mail,sAMAccountName,userPrincipalName
Default Value:
sAMAccountName
Must be one of this:
cn,distinguishedName,sAMAccountName,name,mail,displayName
Default Value:
sAMAccountName
Die Liste Servers¶
In der erforderlichen Liste Servers konfigurierst du mindestens einen LDAP-Server. Du kannst denselben Verzeichnisdienst über mehrere Hosts eintragen, um bei Nichterreichbarkeit oder einer fehlgeschlagenen Anmeldung weitere Server zu versuchen. Die Reihenfolge der Listeneinträge entspricht der Reihenfolge der Anmeldeversuche.
Das folgende Beispiel zeigt eine vollständige Verbindung zu einem Active Directory. Name ist dabei erforderlich und muss auch dann angegeben werden, wenn du nur einen Server verwendest.
1<Module name="LdapAuth">
2 <List name="Servers">
3 <ListEntry>
4 <Value name="Name">primary-ad</Value>
5 <Value name="Host">dc01.example.com</Value>
6 <Value name="SSL">Yes</Value>
7 <Value name="UserName">CN=Raptor,OU=Service Accounts,DC=example,DC=com</Value>
8 <Value name="Password">[...]</Value>
9 <Value name="Domain">example.com</Value>
10 <Value name="UserNameSource">sAMAccountName</Value>
11 <Value name="GroupNameSource">sAMAccountName</Value>
12 </ListEntry>
13 </List>
14</Module>
Der Wert Name¶
Der erforderliche Wert Name bezeichnet die Verbindung in Protokoll- und Fehlermeldungen. Wähle für jeden Eintrag einen eindeutigen, gut erkennbaren Namen. Er darf höchstens 128 Zeichen lang sein und nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten.
<Value name="Name">primary-ad</Value>
Der Wert Host¶
Mit Host gibst du den erforderlichen Hostnamen oder die IP-Adresse des LDAP-Servers an. Der verwendete Anschluss ergibt sich aus der LDAP-Verbindung und der Einstellung SSL. Verwende nach Möglichkeit einen DNS-Namen, der zum Zertifikat des Servers passt.
<Value name="Host">dc01.example.com</Value>
Der Wert SSL¶
SSL steuert, ob die LDAP-Verbindung verschlüsselt aufgebaut wird. Der sichere Standardwert ist Yes. Lasse diesen Standard aktiv und stelle sicher, dass der Raptor Server der Zertifikatskette des LDAP-Servers vertraut.
Setze den Wert nur in einer vollständig kontrollierten Testumgebung auf No. Bei einer unverschlüsselten LDAP-Verbindung können Bind-Zugangsdaten und Anmeldeinformationen im Netzwerk offengelegt werden.
<Value name="SSL">Yes</Value>
Der Wert UserName¶
Mit dem optionalen Wert UserName legst du das Bind-Konto fest, mit dem die Erweiterung Benutzer sucht und Gruppen liest. Die akzeptierte Schreibweise hängt vom LDAP-Server ab; häufig funktionieren ein vollständiger Distinguished Name, ein Benutzerprinzipalname oder ein Domänenkonto.
Lässt du UserName und Password weg, versucht die LDAP-Bibliothek eine Verbindung ohne explizite Bind-Zugangsdaten. Ob dies funktioniert und welche Daten lesbar sind, bestimmt der Server. Gib dem verwendeten Konto nur die für Suche und Gruppenauflösung benötigten Leserechte.
<Value name="UserName">CN=Raptor,OU=Service Accounts,DC=example,DC=com</Value>
Der Wert Password¶
Password enthält das Passwort des Bind-Kontos aus UserName. Der Wert ist nicht das Passwort des Benutzers, der sich am Raptor Client anmeldet. Dieses wird nur während der Anmeldung an den LDAP-Server weitergegeben.
Speichere das Bind-Passwort nicht im Klartext. Kodiere es wie im Kapitel Kodieren von Passwörtern beschrieben.
<Value name="Password">[...]</Value>
Der Wert Domain¶
Mit Domain übergibst du eine Domäne an die LDAP-Verbindung. Dieser Wert ist vor allem für Active-Directory-Server relevant. Für einen allgemeinen LDAP-Dienst kannst du ihn weglassen, sofern dessen Bind- und Suchkonfiguration keine Domänenangabe benötigt.
<Value name="Domain">example.com</Value>
Der Wert UserNameSource¶
UserNameSource bestimmt das LDAP-Attribut, in dem die Erweiterung nach dem eingegebenen Benutzernamen sucht. Ohne Angabe verwendet sie sAMAccountName.
|
Allgemeiner Name des LDAP-Objekts. |
|
Vollständiger Distinguished Name des Benutzers. |
|
Personal- oder Mitarbeiterkennung. |
|
E-Mail-Adresse. |
|
Klassischer Active-Directory-Anmeldename; dies ist der Standardwert. |
|
Benutzerprinzipalname, typischerweise in der Form |
Wähle das Attribut passend zur Schreibweise, die deine Benutzer im Raptor Client eingeben. Der Wert wird als Attributname an den LDAP-Server übergeben und muss deshalb genau wie gezeigt geschrieben werden.
<Value name="UserNameSource">userPrincipalName</Value>
Der Wert GroupNameSource¶
Nach einer erfolgreichen Anmeldung liest die Erweiterung die Gruppen des Benutzers. GroupNameSource bestimmt, welches Attribut jeder Gruppe als Gruppenname an Raptor übergeben wird. Der Standardwert ist sAMAccountName.
Du kannst cn, distinguishedName, sAMAccountName, name, mail oder displayName verwenden. Die gewählte Darstellung muss zu den Gruppennamen passen, die du in deinen Raptor-Berechtigungen verwendest. Ein distinguishedName ist eindeutig, während ein Anzeigename für Administratoren meist leichter lesbar ist.
<Value name="GroupNameSource">sAMAccountName</Value>
Mehrere Server konfigurieren¶
Bei mehreren Einträgen kannst du beispielsweise primäre und sekundäre Domänencontroller oder unterschiedliche Verzeichnisse nacheinander prüfen. Verwende pro Eintrag eigene Bind-Zugangsdaten und Attributquellen, wenn sich die Systeme unterscheiden.
1<Module name="LdapAuth">
2 <List name="Servers">
3 <ListEntry>
4 <Value name="Name">primary-ad</Value>
5 <Value name="Host">dc01.example.com</Value>
6 <Value name="SSL">Yes</Value>
7 <Value name="UserName">raptor@example.com</Value>
8 <Value name="Password">[...]</Value>
9 <Value name="Domain">example.com</Value>
10 </ListEntry>
11 <ListEntry>
12 <Value name="Name">secondary-ad</Value>
13 <Value name="Host">dc02.example.com</Value>
14 <Value name="SSL">Yes</Value>
15 <Value name="UserName">raptor@example.com</Value>
16 <Value name="Password">[...]</Value>
17 <Value name="Domain">example.com</Value>
18 </ListEntry>
19 </List>
20</Module>
Diagnoseinformationen¶
Aktiviere bei der Fehlersuche den Trace-Bereich LdapAuthDetails über die Liste EnabledTraceSections. Er protokolliert unter anderem die verwendete Verbindung, Benutzersuche, Authentifizierungssitzung und ermittelten Gruppen.
Da diese Informationen Benutzernamen, Distinguished Names und Gruppen offenlegen können, solltest du den Bereich nur gezielt zur Diagnose einschalten und danach wieder deaktivieren.