LDAP und Active Directory¶
Drovio Server kann Benutzer gegen ein LDAP-Verzeichnis oder ein Microsoft Active Directory authentifizieren. Die Konten werden bei der ersten Anmeldung automatisch angelegt, es muss also nichts von Hand bereitgestellt werden. Die einzelnen Felder sind in der Konfigurationsreferenz beschrieben.
LDAP kann neben lokalen Konten und neben SSO betrieben werden. Es betrifft nur die Drovio App, da der Web-Client kein Konto benötigt.
Ablauf einer Anmeldung¶
Jede Anmeldung folgt der klassischen Abfolge aus Bind, Suche und erneutem Bind:
- Drovio Server verbindet sich per Bind mit dem Verzeichnis, und zwar mit dem Dienstkonto.
- Es sucht den Benutzer unterhalb von
basemithilfe vonsearch_filter, wobei{0}durch die im Anmeldeformular eingegebene E-Mail-Adresse ersetzt wird. - Es führt einen zweiten Bind mit dem Distinguished Name des Benutzers und dem angegebenen Passwort aus. Dieser zweite Bind ist die eigentliche Authentifizierung.
Drei Konsequenzen, die Sie beim Schreiben Ihres Filters beachten sollten
- Die Suche erstreckt sich über den gesamten Teilbaum unterhalb von
base. - Der Filter muss genau einen Eintrag liefern. Trifft er auf mehrere Einträge zu, wird die Anmeldung abgelehnt, statt sich über eine beliebige Übereinstimmung zu authentifizieren.
- Benutzer melden sich mit einer E-Mail-Adresse an. Der Wert wird von
Leerzeichen befreit und in Kleinbuchstaben umgewandelt, und er muss
syntaktisch gültig sein: ein bloßer
sAMAccountNamewird abgelehnt, noch bevor das Verzeichnis überhaupt kontaktiert wird.
Aus dem Verzeichnis wird ausschließlich der Distinguished Name zurückgelesen. Es wird kein Attribut abgerufen, und als Bind-Mechanismus kommt simple zum Einsatz, sodass Kerberos und die übrigen SASL-Mechanismen nicht zur Verfügung stehen.
Die Verbindung konfigurieren¶
Die Einstellungen finden sich unter Users in der Administrationsoberfläche, im Abschnitt LDAP / Active Directory.
| Feld in der Oberfläche | Konfigurationsschlüssel | Beispiel |
|---|---|---|
| Status | enabled |
true |
| URL | url |
ldaps://ldap.example.com:636 |
| Service Account DN | service_account_dn |
cn=drovio,ou=services,dc=example,dc=com |
| Service Account Password | service_account_password |
|
| Base | base |
ou=users,dc=example,dc=com |
| Search Filter | search_filter |
siehe unten |
| CA Certificate | ca_certificate_path |
/etc/drovio-server/ldap-ca.pem |
Das Dienstkonto benötigt lediglich das Recht, im Teilbaum unterhalb von base zu
suchen, mehr nicht.
Der ausgelieferte Standardwert lautet (&(objectClass=*)(mail={0})). Er
funktioniert, doch das Einschränken der Objektklasse macht die Suche günstiger und
die Eindeutigkeitsbedingung leichter erfüllbar.
Änderungen werden bei der nächsten Anmeldung wirksam. Ein Neustart ist nicht nötig.
Es gibt keine Schaltfläche zum Testen
Die Oberfläche kann die Konfiguration nicht selbst prüfen. Speichern Sie sie, lassen Sie einen Benutzer eine Anmeldung versuchen und lesen Sie anschließend das Serverprotokoll. Jeder Fehlschlag wird dort mit dem fehlgeschlagenen Schritt festgehalten, den die Tabelle unter Fehlerbehebung auf das zu prüfende Feld zurückführt.
Über LDAPS verbinden¶
Verwenden Sie ldaps:// auf Port 636. Das einfache ldap:// überträgt die
Anmeldedaten unverschlüsselt, und der Server weist einmalig im Protokoll darauf
hin.
StartTLS wird nicht unterstützt. Die beiden Modi sind Klartext über ldap://
und implizites TLS über ldaps://.
ca_certificate_path verweist auf das Zertifikat, dem vertraut werden soll. Es
akzeptiert PEM ebenso wie DER sowie ein PEM-Bündel mit einer vollständigen Kette.
Sie können dort eine Zertifizierungsstelle hinterlegen oder direkt das Zertifikat
des Verzeichnisses, wodurch auch ein selbstsigniertes Zertifikat funktioniert.
Die Datei ersetzt den Systemspeicher, sie ergänzt ihn nicht
Ist ca_certificate_path gesetzt, vertraut die LDAP-Verbindung nur dem,
was diese Datei enthält. Ein Verzeichniszertifikat, das von einer bekannten
öffentlichen Zertifizierungsstelle ausgestellt wurde, wird nicht mehr
validiert, sofern seine Kette nicht ebenfalls darin enthalten ist. Lassen Sie
die Einstellung leer, um den Vertrauensspeicher von Java zu verwenden.
Das Zertifikat muss außerdem zu dem in url angegebenen Host passen, und die
Einstellung wird nur für URLs mit ldaps:// ausgewertet. Sie neben einer URL
mit ldap:// zu setzen, bleibt wirkungslos.
Automatische Kontoerstellung¶
Bei der ersten erfolgreichen Anmeldung legt Drovio Server das Konto an:
| Kontofeld | Wert |
|---|---|
| Die im Formular eingegebene Adresse | |
| Benutzername | Der lokale Teil dieser Adresse, aus jane.doe@example.com wird also jane.doe |
Es wird kein Verzeichnisattribut übernommen, anders als bei SAML und OIDC, die
über eigene Einstellungen email_attribute und username_attribute verfügen. Die
Benutzer können ihren Benutzernamen anschließend ändern, und spätere Anmeldungen
lassen diese Änderung unangetastet.
Für ein LDAP-Konto wird niemals ein Passwort gespeichert, und es wird keine Bestätigungs-E-Mail versendet. Passwortänderungen, Zurücksetzungen und die Passwortrichtlinie liegen vollständig bei Ihrem Verzeichnis: die Administrationsoberfläche bietet für diese Konten keine Bearbeitung von Anmeldedaten.
Prüfen Sie Ihren Lizenzpool, bevor Sie LDAP für ein großes Verzeichnis öffnen
Die Kontoerstellung folgt
users.license_allocation
wie bei jedem anderen Konto. Ist kein Platz frei, wird das Konto dennoch
angelegt, nur eben ohne Lizenz. Der Endbenutzer wird in der Drovio App darauf
hingewiesen, und das Serverprotokoll hält fest:
Zugriff auf eine Gruppe oder eine Organisationseinheit beschränken¶
Es gibt keine eigene Einstellung dafür, und es braucht auch keine. Die beiden vorhandenen Felder genügen:
- Über den Teilbaum. Lassen Sie
baseauf den Zweig zeigen, der die berechtigten Benutzer enthält, zum BeispielOU=Drovio Users,DC=example,DC=com. Alles außerhalb davon ist für die Suche unsichtbar. -
Über die Gruppenmitgliedschaft. Ergänzen Sie den Filter um eine Klausel:
Verwenden Sie unter Active Directory die Vergleichsregel
memberOf:1.2.840.113556.1.4.1941:=stattmemberOf, um verschachtelte Gruppen einzuschließen.
Die Prüfung erfolgt bei jeder Anmeldung. Wer aus der Gruppe entfernt wird, ist also sofort ausgesperrt. Denken Sie daran, dass der Filter weiterhin genau einen Eintrag liefern muss.
Mit anderen Anmeldemethoden kombinieren¶
| Kombination | Verhalten |
|---|---|
| LDAP und lokale Konten | Das Verzeichnis wird zuerst befragt. Weist es die Anmeldedaten zurück, werden dieselbe E-Mail-Adresse und dasselbe Passwort anschließend gegen das lokale Konto geprüft |
| LDAP und SAML | Unterstützt, sie laufen über getrennte Wege |
| LDAP und OIDC | Unterstützt, sie laufen über getrennte Wege |
Um ausschließlich die Authentifizierung über das Verzeichnis zu erzwingen,
deaktivieren Sie
users.auth.local.
Zugriff entziehen¶
Wird das Konto im Verzeichnis gelöscht oder deaktiviert, scheitert die Anmeldung
ab dem nächsten Versuch. Was dabei nicht geschieht: auf der Drovio-Seite wird
nichts entfernt, denn es gibt keinen Abgleichlauf. Der Benutzerdatensatz und sein
Lizenzplatz bleiben beide bestehen, sofern
users.license_allocation
deaktiviert oder auf den Modus new_user gesetzt ist.
Um den Platz freizugeben, löschen Sie den Benutzer im Tab Users der
Administrationsoberfläche oder aktivieren Sie
users.remove_inactive, damit
ungenutzte Konten regelmäßig bereinigt werden.
Betriebsgrenzen¶
Einige Verhaltensweisen sind fest vorgegeben und sollten bekannt sein, wenn Sie die Bereitstellung dimensionieren oder die Firewall öffnen:
| Verhalten | Wert |
|---|---|
| Verbindungen je Anmeldung | Zwei, eine für das Dienstkonto und eine für den Benutzer. Sie werden nicht gepoolt |
| Verbindungs-Timeout | 30 Sekunden |
| Lese-Timeout | 60 Sekunden |
| Referrals | Werden ignoriert |
Dass Referrals ignoriert werden, fällt in einem Active-Directory-Forest mit
mehreren Domänen ins Gewicht: Benutzer, deren Konto in einer anderen Domäne als
der in url angegebenen liegt, werden nicht gefunden. Lassen Sie Drovio Server
stattdessen auf einen globalen Katalog zeigen, über ldaps:// auf Port 3269,
oder betreiben Sie einen Server je Domäne. Der globale Katalog stellt nur einen
Teil der Attribute bereit, was hier genügt, da lediglich der Distinguished Name
verwendet wird.