Skip to main content
Deze functie is ontwikkeld door yu-i-i/overleaf-cep. Hier bieden we wat documentatie voor je configuratie.
Overleaf gebruikt de bibliotheek passport-ldapauth, die relatief verouderd is; LDAP-compatibiliteit kan daarom niet volledig worden gegarandeerd. Bij bepaalde LDAP-identiteitsproviders (bijvoorbeeld https://goauthentik.io/) kunnen aanmeldingen mislukken. Daarom wordt aanbevolen om, indien mogelijk, bij voorkeur OAuth/SAML te gebruiken. Volg voor goauthentik de geteste handleiding Stap voor stap: goauthentik hieronder.

Wat is LDAP

LDAP is een authenticatieprotocol dat wordt gebruikt voor externe identiteitsverificatie. Overleaf Server Pro biedt in de webinterface een apart LDAP-aanmeldformulier, los van de standaard authenticatiemethode. Wanneer een gebruiker zijn LDAP-gebruikersnaam en -wachtwoord invoert, controleert de Overleaf-backend de inloggegevens bij de geconfigureerde LDAP-server, bijvoorbeeld ldap://ldap:10389.

Een Server Pro-voorbeeld voor LDAP

Configuratie

Intern gebruikt Overleaf LDAP de bibliotheek passport-ldapauth. De meeste van deze configuratieopties worden doorgegeven aan het configuratieobject server, dat wordt gebruikt om passport-ldapauth te configureren. Als je problemen hebt met het configureren van LDAP, is het de moeite waard om de README van passport-ldapauth te lezen om een idee te krijgen van de configuratie die het verwacht. De omgevingsvariabele EXTERNAL_AUTH is vereist om de LDAP-authenticatiemodule in te schakelen. Deze omgevingsvariabele bepaalt welke externe authenticatiemethoden worden geactiveerd. De waarde van deze variabele is een lijst. Als de lijst ldap bevat, wordt LDAP-authenticatie geactiveerd. Bijvoorbeeld: EXTERNAL_AUTH=ldap saml Anders dan bij Overleaf CEP beperken we in onze ayaka-notes-editie LDAP-authenticatie tot een zuivere authenticatiemethode, die beschikbaar is op http://your-overleaf.com/ldap/login. Wanneer een gebruiker bij LDAP-authenticatie een username en password invoert in het aanmeldformulier, gebeurt het volgende:
  1. Er wordt in de LDAP-directory gezocht naar een LDAP-gebruiker met het filter dat is gedefinieerd in OVERLEAF_LDAP_SEARCH_FILTER, en deze wordt geauthenticeerd.
  2. Als de authenticatie slaagt, wordt in de Overleaf-gebruikersdatabase gezocht naar een gebruiker waarvan het primaire e-mailadres overeenkomt met het e-mailadres van de geauthenticeerde LDAP-gebruiker:
    • Als er een overeenkomende gebruiker wordt gevonden, wordt het veld hashedPassword van deze gebruiker verwijderd (als het bestaat). Zo kan de gebruiker zich in de toekomst alleen nog via LDAP-authenticatie aanmelden.
    • Als er geen overeenkomende gebruiker wordt gevonden, wordt een nieuwe Overleaf-gebruiker aangemaakt met het e-mailadres, de voornaam en de achternaam die van de LDAP-server zijn opgehaald.
Voor gebruikers die zich via LDAP aanmelden, slaan we geen gehashte wachtwoorden op in de Mongo-database van Overleaf (en bestaande worden verwijderd).

Omgevingsvariabelen

  • OVERLEAF_LDAP_URL (vereist)
    • URL van de LDAP-server.
      • Voorbeeld: ldaps://ldap.example.com:636 (LDAP over SSL)
      • Voorbeeld: ldap://ldap.example.com:389 (onversleuteld of STARTTLS, indien geconfigureerd).
  • OVERLEAF_LDAP_IDENTITY_SERVICE_NAME
    • Weergavenaam van de LDAP-identiteitsdienst, gebruikt op de aanmeldpagina.
    • Standaard Log in with LDAP Provider.
  • OVERLEAF_LDAP_EMAIL_ATT
    • Het e-mailattribuut dat door de LDAP-server wordt teruggegeven, standaard mail. Elke LDAP-gebruiker moet ten minste één e-mailadres hebben. Als er meerdere adressen worden opgegeven, wordt alleen het eerste gebruikt.
  • OVERLEAF_LDAP_FIRST_NAME_ATT
    • De naam van de eigenschap met de voornaam van de gebruiker die in de applicatie wordt gebruikt, meestal givenName.
  • OVERLEAF_LDAP_LAST_NAME_ATT
    • De naam van de eigenschap met de achternaam van de gebruiker die in de applicatie wordt gebruikt, meestal sn.
  • OVERLEAF_LDAP_NAME_ATT
    • De naam van de eigenschap met de volledige naam van de gebruiker, meestal cn. Als een van de twee vorige variabelen niet is gedefinieerd, wordt de voor- en/of achternaam van de gebruiker uit deze variabele gehaald. Anders wordt deze niet gebruikt.
  • OVERLEAF_LDAP_PLACEHOLDER
    • De placeholder voor het aanmeldformulier, standaard Username.
  • OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN
    • Indien ingesteld op true, worden de velden first_name en last_name van de LDAP-gebruiker bij het aanmelden bijgewerkt en wordt het formulier met gebruikersgegevens op de pagina /user/settings voor LDAP-gebruikers uitgeschakeld. Anders worden de gegevens alleen bij de eerste aanmelding opgehaald.
  • OVERLEAF_LDAP_BIND_DN
    • De distinguished name van de LDAP-gebruiker die voor de LDAP-verbinding moet worden gebruikt (deze gebruiker moet accounts op de LDAP-server kunnen zoeken/weergeven), bijv. cn=ldap_reader,dc=example,dc=com. Als dit niet is gedefinieerd, wordt anonieme binding gebruikt.
  • OVERLEAF_LDAP_BIND_CREDENTIALS
    • Wachtwoord voor OVERLEAF_LDAP_BIND_DN.
  • OVERLEAF_LDAP_BIND_PROPERTY
    • Eigenschap van de gebruiker waartegen bij de client wordt gebonden, standaard dn.
  • OVERLEAF_LDAP_SEARCH_BASE (vereist)
    • De basis-DN van waaruit naar gebruikers wordt gezocht. Bijv. ou=people,dc=example,dc=com.
  • OVERLEAF_LDAP_SEARCH_FILTER
    • LDAP-zoekfilter waarmee een gebruiker wordt gevonden. Gebruik de letterlijke tekst ‘{{username}}’ om de opgegeven gebruikersnaam in de LDAP-zoekopdracht in te voegen.
      • Voorbeeld: (|(uid={{username}})(mail={{username}})) (gebruiker kan zich aanmelden met e-mailadres of met aanmeldnaam).
      • Voorbeeld: (sAMAccountName={{username}}) (Active Directory).
  • OVERLEAF_LDAP_SEARCH_SCOPE
    • Het bereik van de zoekopdracht kan base, one of sub (standaard) zijn.
  • OVERLEAF_LDAP_SEARCH_ATTRIBUTES
    • JSON-array met attributen die van de LDAP-server moeten worden opgehaald, bijv. ["uid", "mail", "givenName", "sn"]. Standaard worden alle attributen opgehaald.
  • OVERLEAF_LDAP_STARTTLS
    • Indien true, wordt LDAP over TLS gebruikt.
  • OVERLEAF_LDAP_TLS_OPTS_CA_PATH
    • Pad naar het bestand met het CA-certificaat waarmee het SSL/TLS-certificaat van de LDAP-server wordt geverifieerd. Bij meerdere certificaten kan het een JSON-array met paden naar de certificaten zijn. De bestanden moeten toegankelijk zijn voor de Docker-container.
      • Voorbeeld (één certificaat): /var/lib/overleaf/certs/ldap_ca_cert.pem
      • Voorbeeld (meerdere certificaten): ["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
  • OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH
    • Indien true, wordt het servercertificaat geverifieerd aan de hand van de lijst met opgegeven CA’s.
  • OVERLEAF_LDAP_CACHE
    • Indien true, worden maximaal 100 inloggegevens tegelijk gedurende 5 minuten gecachet.
  • OVERLEAF_LDAP_TIMEOUT
    • Hoe lang de client bewerkingen laat lopen voordat er een time-out optreedt, in ms (standaard: Infinity).
  • OVERLEAF_LDAP_CONNECT_TIMEOUT
    • Hoe lang de client wacht voordat er een time-out optreedt bij TCP-verbindingen, in ms (standaard: standaardwaarde van het besturingssysteem).
  • OVERLEAF_LDAP_IS_ADMIN_ATT en OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE
    • Wanneer beide omgevingsvariabelen zijn ingesteld, zet het aanmeldproces user.isAdmin = true als het LDAP-profiel het attribuut bevat dat is opgegeven in OVERLEAF_LDAP_IS_ADMIN_ATT en de waarde daarvan overeenkomt met OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE of een array is die OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE bevat; anders wordt user.isAdmin ingesteld op false. Als een van deze variabelen niet is ingesteld, wordt de beheerdersstatus alleen op true gezet bij het aanmaken van de beheerder in Launchpad.
De volgende vijf variabelen worden gebruikt om te configureren hoe gebruikerscontacten van de LDAP-server worden opgehaald.
  • OVERLEAF_LDAP_CONTACTS_FILTER
    • Het filter waarmee op de LDAP-server wordt gezocht naar gebruikers die in de contacten moeten worden geladen. De placeholder ‘{{userProperty}}’ in het filter wordt vervangen door de waarde van de eigenschap die is opgegeven in OVERLEAF_LDAP_CONTACTS_PROPERTY, afkomstig van de LDAP-gebruiker die de zoekopdracht start. Als dit niet is gedefinieerd, worden er geen gebruikers van de LDAP-server in de contacten geladen.
  • OVERLEAF_LDAP_CONTACTS_SEARCH_BASE
    • Geeft de basis-DN op van waaruit naar contacten wordt gezocht. Standaard OVERLEAF_LDAP_SEARCH_BASE.
  • OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE
    • Het bereik van de zoekopdracht kan base, one of sub (standaard) zijn.
  • OVERLEAF_LDAP_CONTACTS_PROPERTY
    • Geeft de eigenschap van het gebruikersobject op die de placeholder ‘{{userProperty}}’ in OVERLEAF_LDAP_CONTACTS_FILTER vervangt.
  • OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE
    • Geeft de waarde van OVERLEAF_LDAP_CONTACTS_PROPERTY op als de zoekopdracht wordt gestart door een niet-LDAP-gebruiker. Als deze variabele niet is gedefinieerd, levert het resulterende filter niets op. De waarde * kan als wildcard worden gebruikt.
Het bovenstaande voorbeeld zorgt ervoor dat alle LDAP-gebruikers met dezelfde UNIX-gid in de contacten van de huidige LDAP-gebruiker worden geladen. Niet-LDAP-gebruikers krijgen alle LDAP-gebruikers met UNIX-gid=1000 in hun contacten.

Stap voor stap: goauthentik

Hieronder doorlopen we een setup die is getest met goauthentik. De voorbeelden gebruiken de Base DN dc=example,dc=com; vervang deze door je eigen.
1

Maak een bind-account aan

Overleaf logt eerst met een eigen account in op de directory om de gebruiker te vinden. Open in Authentik Directory > Users, klik op New User, kies Internal User en klik op Next. Voer een gebruikersnaam in, bijvoorbeeld ldapservice, en klik op Create:

Authentik: het bind-account aanmaken

Open de nieuwe gebruiker en klik op Set password. Dit wachtwoord komt in OVERLEAF_LDAP_BIND_CREDENTIALS:

Authentik: het wachtwoord van het bind-account instellen (testinstantie)

Noteer het nummer van de gebruiker in de adresbalk, bijvoorbeeld 19 in …/#/identity/users/19. Je hebt het nodig in stap 3.
2

Maak de provider en de applicatie aan

Open Applications > Applications en klik op New Application. De wizard maakt de applicatie en de bijbehorende provider samen aan.1. Geef de applicatie een naam en een slug, bijvoorbeeld overleaf-ldap, en klik op Next:

Authentik: naam en slug van de applicatie

2. Kies LDAP Provider en klik op Next:

Authentik: de LDAP-provider kiezen

3. Stel Bind Mode in op Direct binding en Search Mode op Direct querying:

Authentik: bind- en zoekmodus van de LDAP-provider

4. Stel verderop Bind Flow in op default-authentication-flow en Base DN op je Base DN, bijvoorbeeld dc=example,dc=com:

Authentik: bind flow en Base DN van de LDAP-provider

5. Klik op Next tot de laatste pagina en verstuur de applicatie.
3

Laat het bind-account de directory doorzoeken

Zonder deze machtiging ziet het bind-account alleen zichzelf, vindt de zoekopdracht geen gebruiker en mislukt elke LDAP-aanmelding.Open de provider, ga naar Permissions en klik op Assign Role Object Permission. Typ bij Role het nummer uit stap 1, kies ak-managed-role--user-<number> en schakel daarna Search full LDAP directory in:

Authentik: het bind-account de zoekmachtiging geven (testinstantie)

De rol toont dan een vinkje onder Search full LDAP directory:

Authentik: machtigingen van een LDAP-provider (testinstantie)

4

Start de LDAP-outpost

Authentik beantwoordt LDAP via een outpost, een aparte container. Open Applications > Outposts, maak een outpost van het type LDAP aan met je provider en implementeer deze zoals Authentik beschrijft. De outpost luistert op poort 389 van de host waarop hij draait. Zodra hij verbonden is, toont hij een groen vinkje:

Authentik: een draaiende LDAP-outpost (testinstantie)

5

Vul de DN's in

De providerpagina toont de Base DN en een voorbeeld onder How to connect:

Authentik: overzicht van een LDAP-provider (testinstantie)

Kopieer de voorbeeldwaarden niet zoals ze zijn:
  • Bind DN toont het account waarmee je bent ingelogd. Gebruik in plaats daarvan het bind-account uit stap 1: cn=ldapservice,ou=users,<Base DN>.
  • Search base toont de Base DN. Gebruik ou=users,<Base DN>.
Authentik houdt voor elke gebruiker een groep met dezelfde naam bij onder ou=virtual-groups. Als je de hele Base DN doorzoekt op (cn=alice), vind je zowel cn=alice,ou=users,… als cn=alice,ou=virtual-groups,…, en Overleaf weigert een aanmelding die met meer dan één item overeenkomt. Houd de search base op ou=users,<Base DN>.
6

Controleer de zoekopdracht

Voer, voordat je Overleaf start, de zoekopdracht uit die Overleaf zal doen. Die moet precies één dn: tonen:
Helemaal geen dn: betekent meestal dat de machtiging uit stap 3 ontbreekt.
7

Koppel de beheerders (optioneel)

De groepen van een gebruiker staan in memberOf, als DN’s onder ou=groups. Om de leden van de Authentik-groep Admins beheerder van Overleaf te maken:
De beheerdersvlag wordt bij elke LDAP-aanmelding bijgewerkt. Met een verkeerd attribuut of een verkeerde waarde verliest elke beheerder die via LDAP inlogt de beheerdersrechten. Test de koppeling eerst met een tweede beheerdersaccount.
variables.env
Laatst gewijzigd op 6 oktober 2026