Zum Inhalt

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:

  1. Drovio Server verbindet sich per Bind mit dem Verzeichnis, und zwar mit dem Dienstkonto.
  2. Es sucht den Benutzer unterhalb von base mithilfe von search_filter, wobei {0} durch die im Anmeldeformular eingegebene E-Mail-Adresse ersetzt wird.
  3. 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 sAMAccountName wird 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.

(&(objectClass=inetOrgPerson)(mail={0}))
(&(objectClass=user)(mail={0}))
(&(objectClass=user)(userPrincipalName={0}))

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
E-Mail 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:

Could not automatically allocate a license: no more free license left...

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 base auf den Zweig zeigen, der die berechtigten Benutzer enthält, zum Beispiel OU=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:

    (&(objectClass=user)(mail={0})(memberOf=CN=Drovio,OU=Groups,DC=example,DC=com))
    

    Verwenden Sie unter Active Directory die Vergleichsregel memberOf:1.2.840.113556.1.4.1941:= statt memberOf, 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.