Was ist LDAP?
LDAP ist ein Authentifizierungsprotokoll zur externen Identitätsprüfung. Overleaf Server Pro bietet in der Weboberfläche ein eigenes LDAP-Anmeldeformular, getrennt von der Standard-Authentifizierungsmethode. Wenn ein Benutzer seinen LDAP-Benutzernamen und sein Passwort übermittelt, prüft das Overleaf-Backend die Zugangsdaten gegen den konfigurierten LDAP-Server, zum Beispielldap://ldap:10389.

Ein Server Pro-Beispiel für LDAP
Konfiguration
Intern verwendet Overleaf LDAP die Bibliothek passport-ldapauth. Die meisten dieser Konfigurationsoptionen werden an das Konfigurationsobjektserver durchgereicht, mit dem passport-ldapauth konfiguriert wird. Wenn Sie Probleme bei der LDAP-Konfiguration haben, lohnt es sich, die README von passport-ldapauth zu lesen, um ein Gefühl für die erwartete Konfiguration zu bekommen.
Die Umgebungsvariable EXTERNAL_AUTH ist erforderlich, um das LDAP-Authentifizierungsmodul zu aktivieren. Diese Umgebungsvariable legt fest, welche externen Authentifizierungsmethoden aktiviert sind. Der Wert dieser Variablen ist eine Liste. Enthält die Liste ldap, wird die LDAP-Authentifizierung aktiviert.
Zum Beispiel: EXTERNAL_AUTH=ldap saml
Anders als bei Overleaf CEP beschränken wir in unserer ayaka-notes-Edition die LDAP-Authentifizierung auf eine reine Authentifizierungsmethode, die unter http://your-overleaf.com/ldap/login verfügbar ist.
Wenn bei der LDAP-Authentifizierung ein Benutzer im Anmeldeformular einen username und ein password eingibt, geschieht Folgendes:
- Im LDAP-Verzeichnis wird mit dem durch
OVERLEAF_LDAP_SEARCH_FILTERdefinierten Filter nach einem LDAP-Benutzer gesucht, der dann authentifiziert wird. - Ist die Authentifizierung erfolgreich, wird in der Overleaf-Benutzerdatenbank nach einem Benutzer gesucht, dessen primäre E-Mail-Adresse mit der E-Mail-Adresse des authentifizierten LDAP-Benutzers übereinstimmt:
- Wird ein passender Benutzer gefunden, wird das Feld
hashedPassworddieses Benutzers gelöscht (falls vorhanden). So wird sichergestellt, dass sich der Benutzer künftig nur noch über die LDAP-Authentifizierung anmelden kann. - Wird kein passender Benutzer gefunden, wird ein neuer Overleaf-Benutzer mit der E-Mail-Adresse sowie dem Vor- und Nachnamen angelegt, die vom LDAP-Server abgerufen werden.
- Wird ein passender Benutzer gefunden, wird das Feld
Umgebungsvariablen
OVERLEAF_LDAP_URL(erforderlich)- URL des LDAP-Servers.
- Beispiel:
ldaps://ldap.example.com:636(LDAP über SSL) - Beispiel:
ldap://ldap.example.com:389(unverschlüsselt oder STARTTLS, falls konfiguriert).
- Beispiel:
- URL des LDAP-Servers.
OVERLEAF_LDAP_IDENTITY_SERVICE_NAME- Anzeigename für den LDAP-Identitätsdienst, der auf der Anmeldeseite verwendet wird.
- Standardwert:
Log in with LDAP Provider.
OVERLEAF_LDAP_EMAIL_ATT- Das vom LDAP-Server zurückgegebene E-Mail-Attribut, standardmäßig
mail. Jeder LDAP-Benutzer muss mindestens eine E-Mail-Adresse haben. Werden mehrere Adressen geliefert, wird nur die erste verwendet.
- Das vom LDAP-Server zurückgegebene E-Mail-Attribut, standardmäßig
OVERLEAF_LDAP_FIRST_NAME_ATT- Der Name der Eigenschaft, die den in der Anwendung verwendeten Vornamen des Benutzers enthält, in der Regel
givenName.
- Der Name der Eigenschaft, die den in der Anwendung verwendeten Vornamen des Benutzers enthält, in der Regel
OVERLEAF_LDAP_LAST_NAME_ATT- Der Name der Eigenschaft, die den in der Anwendung verwendeten Nachnamen des Benutzers enthält, in der Regel
sn.
- Der Name der Eigenschaft, die den in der Anwendung verwendeten Nachnamen des Benutzers enthält, in der Regel
OVERLEAF_LDAP_NAME_ATT- Der Name der Eigenschaft, die den vollständigen Namen des Benutzers enthält, in der Regel
cn. Ist eine der beiden vorherigen Variablen nicht definiert, werden Vor- und/oder Nachname des Benutzers aus dieser Variablen extrahiert. Andernfalls wird sie nicht verwendet.
- Der Name der Eigenschaft, die den vollständigen Namen des Benutzers enthält, in der Regel
OVERLEAF_LDAP_PLACEHOLDER- Der Platzhalter für das Anmeldeformular, standardmäßig
Username.
- Der Platzhalter für das Anmeldeformular, standardmäßig
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Wenn auf
truegesetzt, werden die Felderfirst_nameundlast_namedes LDAP-Benutzers bei der Anmeldung aktualisiert, und das Formular für Benutzerdetails auf der Seite/user/settingswird für LDAP-Benutzer deaktiviert. Andernfalls werden die Details nur bei der ersten Anmeldung abgerufen.
- Wenn auf
OVERLEAF_LDAP_BIND_DN- Der Distinguished Name des LDAP-Benutzers, der für die LDAP-Verbindung verwendet werden soll (dieser Benutzer sollte Konten auf dem LDAP-Server suchen/auflisten können), z. B.
cn=ldap_reader,dc=example,dc=com. Ist er nicht definiert, wird ein anonymer Bind verwendet.
- Der Distinguished Name des LDAP-Benutzers, der für die LDAP-Verbindung verwendet werden soll (dieser Benutzer sollte Konten auf dem LDAP-Server suchen/auflisten können), z. B.
OVERLEAF_LDAP_BIND_CREDENTIALS- Passwort für
OVERLEAF_LDAP_BIND_DN.
- Passwort für
OVERLEAF_LDAP_BIND_PROPERTY- Eigenschaft des Benutzers, mit der gegen den Client gebunden wird, standardmäßig
dn.
- Eigenschaft des Benutzers, mit der gegen den Client gebunden wird, standardmäßig
OVERLEAF_LDAP_SEARCH_BASE(erforderlich)- Die Base-DN, ab der nach Benutzern gesucht wird. Z. B.
ou=people,dc=example,dc=com.
- Die Base-DN, ab der nach Benutzern gesucht wird. Z. B.
OVERLEAF_LDAP_SEARCH_FILTER- LDAP-Suchfilter, mit dem ein Benutzer gefunden wird. Verwenden Sie das Literal ‘{{username}}’, damit der angegebene Benutzername in die LDAP-Suche eingesetzt wird.
- Beispiel:
(|(uid={{username}})(mail={{username}}))(Benutzer kann sich mit E-Mail-Adresse oder Login-Namen anmelden). - Beispiel:
(sAMAccountName={{username}})(Active Directory).
- Beispiel:
- LDAP-Suchfilter, mit dem ein Benutzer gefunden wird. Verwenden Sie das Literal ‘{{username}}’, damit der angegebene Benutzername in die LDAP-Suche eingesetzt wird.
OVERLEAF_LDAP_SEARCH_SCOPE- Der Suchbereich kann
base,oneodersub(Standard) sein.
- Der Suchbereich kann
OVERLEAF_LDAP_SEARCH_ATTRIBUTES- JSON-Array der vom LDAP-Server abzurufenden Attribute, z. B.
["uid", "mail", "givenName", "sn"]. Standardmäßig werden alle Attribute abgerufen.
- JSON-Array der vom LDAP-Server abzurufenden Attribute, z. B.
OVERLEAF_LDAP_STARTTLS- Wenn
true, wird LDAP über TLS verwendet.
- Wenn
OVERLEAF_LDAP_TLS_OPTS_CA_PATH- Pfad zur Datei mit dem CA-Zertifikat, mit dem das SSL/TLS-Zertifikat des LDAP-Servers überprüft wird. Bei mehreren Zertifikaten kann es sich um ein JSON-Array mit Pfaden zu den Zertifikaten handeln. Die Dateien müssen für den Docker-Container zugänglich sein.
- Beispiel (ein Zertifikat):
/var/lib/overleaf/certs/ldap_ca_cert.pem - Beispiel (mehrere Zertifikate):
["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
- Beispiel (ein Zertifikat):
- Pfad zur Datei mit dem CA-Zertifikat, mit dem das SSL/TLS-Zertifikat des LDAP-Servers überprüft wird. Bei mehreren Zertifikaten kann es sich um ein JSON-Array mit Pfaden zu den Zertifikaten handeln. Die Dateien müssen für den Docker-Container zugänglich sein.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Wenn
true, wird das Serverzertifikat gegen die Liste der angegebenen CAs geprüft.
- Wenn
OVERLEAF_LDAP_CACHE- Wenn
true, werden bis zu 100 Zugangsdaten gleichzeitig für 5 Minuten zwischengespeichert.
- Wenn
OVERLEAF_LDAP_TIMEOUT- Wie lange der Client Vorgänge laufen lässt, bevor eine Zeitüberschreitung eintritt, in ms (Standard: Infinity).
OVERLEAF_LDAP_CONNECT_TIMEOUT- Wie lange der Client bei TCP-Verbindungen wartet, bevor eine Zeitüberschreitung eintritt, in ms (Standard: Standardwert des Betriebssystems).
OVERLEAF_LDAP_IS_ADMIN_ATTundOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Sind beide Umgebungsvariablen gesetzt, setzt der Anmeldevorgang
user.isAdmin = true, wenn das LDAP-Profil das durchOVERLEAF_LDAP_IS_ADMIN_ATTangegebene Attribut enthält und dessen Wert entwederOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEentspricht oder ein Array ist, dasOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEenthält; andernfalls wirduser.isAdminauffalsegesetzt. Ist eine dieser Variablen nicht gesetzt, wird der Admin-Status nur bei der Erstellung des Admin-Benutzers im Launchpad auftruegesetzt.
- Sind beide Umgebungsvariablen gesetzt, setzt der Anmeldevorgang
OVERLEAF_LDAP_CONTACTS_FILTER- Der Filter, mit dem auf dem LDAP-Server nach Benutzern gesucht wird, die in die Kontakte geladen werden sollen. Der Platzhalter ‘{{userProperty}}’ im Filter wird durch den Wert der durch
OVERLEAF_LDAP_CONTACTS_PROPERTYangegebenen Eigenschaft des LDAP-Benutzers ersetzt, der die Suche auslöst. Ist er nicht definiert, werden keine Benutzer vom LDAP-Server in die Kontakte übernommen.
- Der Filter, mit dem auf dem LDAP-Server nach Benutzern gesucht wird, die in die Kontakte geladen werden sollen. Der Platzhalter ‘{{userProperty}}’ im Filter wird durch den Wert der durch
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE- Gibt die Base-DN an, ab der nach Kontakten gesucht wird. Standardmäßig
OVERLEAF_LDAP_SEARCH_BASE.
- Gibt die Base-DN an, ab der nach Kontakten gesucht wird. Standardmäßig
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- Der Suchbereich kann
base,oneodersub(Standard) sein.
- Der Suchbereich kann
OVERLEAF_LDAP_CONTACTS_PROPERTY- Gibt die Eigenschaft des Benutzerobjekts an, die den Platzhalter ‘{{userProperty}}’ in
OVERLEAF_LDAP_CONTACTS_FILTERersetzt.
- Gibt die Eigenschaft des Benutzerobjekts an, die den Platzhalter ‘{{userProperty}}’ in
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Gibt den Wert von
OVERLEAF_LDAP_CONTACTS_PROPERTYan, wenn die Suche von einem Nicht-LDAP-Benutzer ausgelöst wird. Ist diese Variable nicht definiert, liefert der resultierende Filter keine Treffer. Der Wert*kann als Platzhalter verwendet werden.
- Gibt den Wert von
Beispiel
Beispiel
gid in die Kontakte des aktuellen LDAP-Benutzers. Nicht-LDAP-Benutzer erhalten alle LDAP-Benutzer mit UNIX-gid=1000 in ihren Kontakten.Beispiel einer variables.env-Datei
Beispiel einer variables.env-Datei
Schritt für Schritt: goauthentik
Diese Anleitung beschreibt eine Einrichtung, die mit goauthentik getestet wurde. Die Beispiele verwenden den Base DNdc=example,dc=com; ersetzen Sie ihn durch Ihren eigenen.
Bind-Konto anlegen
ldapservice, und klicken Sie auf Create:
Authentik: Bind-Konto anlegen
OVERLEAF_LDAP_BIND_CREDENTIALS:
Authentik: Passwort des Bind-Kontos festlegen (Testinstanz)
19 in …/#/identity/users/19. Sie benötigen sie in Schritt 3.Provider und Anwendung anlegen
overleaf-ldap, und klicken Sie auf Next:
Authentik: Name und Slug der Anwendung

Authentik: LDAP-Provider auswählen

Authentik: Bind- und Suchmodus des LDAP-Providers
default-authentication-flow und Base DN auf Ihren Base DN, zum Beispiel dc=example,dc=com:
Authentik: Bind Flow und Base DN des LDAP-Providers
Dem Bind-Konto die Verzeichnissuche erlauben
ak-managed-role--user-<number> und aktivieren Sie dann Search full LDAP directory:
Authentik: dem Bind-Konto die Suchberechtigung erteilen (Testinstanz)

Authentik: Berechtigungen eines LDAP-Providers (Testinstanz)
LDAP-Outpost betreiben

Authentik: ein laufender LDAP-Outpost (Testinstanz)
DNs eintragen

Authentik: Übersicht eines LDAP-Providers (Testinstanz)
- Bind DN zeigt das Konto, mit dem Sie angemeldet sind. Verwenden Sie stattdessen das Bind-Konto aus Schritt 1:
cn=ldapservice,ou=users,<Base DN>. - Search base zeigt den Base DN. Verwenden Sie
ou=users,<Base DN>.
Suche prüfen
dn: ausgeben:dn: ausgegeben, fehlt meist die Berechtigung aus Schritt 3.Administratoren zuordnen (optional)
memberOf, als DNs unter ou=groups. Um die Mitglieder der Authentik-Gruppe Admins zu Administratoren von Overleaf zu machen:Getestete variables.env für goauthentik
Getestete variables.env für goauthentik

