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, bijvoorbeeldldap://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 configuratieobjectserver, 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:
- 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. - 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
hashedPasswordvan 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.
- Als er een overeenkomende gebruiker wordt gevonden, wordt het veld
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).
- Voorbeeld:
- URL van de LDAP-server.
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.
- Het e-mailattribuut dat door de LDAP-server wordt teruggegeven, standaard
OVERLEAF_LDAP_FIRST_NAME_ATT- De naam van de eigenschap met de voornaam van de gebruiker die in de applicatie wordt gebruikt, meestal
givenName.
- De naam van de eigenschap met de voornaam van de gebruiker die in de applicatie wordt gebruikt, meestal
OVERLEAF_LDAP_LAST_NAME_ATT- De naam van de eigenschap met de achternaam van de gebruiker die in de applicatie wordt gebruikt, meestal
sn.
- De naam van de eigenschap met de achternaam van de gebruiker die in de applicatie wordt gebruikt, meestal
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.
- De naam van de eigenschap met de volledige naam van de gebruiker, meestal
OVERLEAF_LDAP_PLACEHOLDER- De placeholder voor het aanmeldformulier, standaard
Username.
- De placeholder voor het aanmeldformulier, standaard
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Indien ingesteld op
true, worden de veldenfirst_nameenlast_namevan de LDAP-gebruiker bij het aanmelden bijgewerkt en wordt het formulier met gebruikersgegevens op de pagina/user/settingsvoor LDAP-gebruikers uitgeschakeld. Anders worden de gegevens alleen bij de eerste aanmelding opgehaald.
- Indien ingesteld op
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.
- 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.
OVERLEAF_LDAP_BIND_CREDENTIALS- Wachtwoord voor
OVERLEAF_LDAP_BIND_DN.
- Wachtwoord voor
OVERLEAF_LDAP_BIND_PROPERTY- Eigenschap van de gebruiker waartegen bij de client wordt gebonden, standaard
dn.
- Eigenschap van de gebruiker waartegen bij de client wordt gebonden, standaard
OVERLEAF_LDAP_SEARCH_BASE(vereist)- De basis-DN van waaruit naar gebruikers wordt gezocht. Bijv.
ou=people,dc=example,dc=com.
- De basis-DN van waaruit naar gebruikers wordt gezocht. Bijv.
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).
- Voorbeeld:
- LDAP-zoekfilter waarmee een gebruiker wordt gevonden. Gebruik de letterlijke tekst ‘{{username}}’ om de opgegeven gebruikersnaam in de LDAP-zoekopdracht in te voegen.
OVERLEAF_LDAP_SEARCH_SCOPE- Het bereik van de zoekopdracht kan
base,oneofsub(standaard) zijn.
- Het bereik van de zoekopdracht kan
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.
- JSON-array met attributen die van de LDAP-server moeten worden opgehaald, bijv.
OVERLEAF_LDAP_STARTTLS- Indien
true, wordt LDAP over TLS gebruikt.
- Indien
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"]
- Voorbeeld (één certificaat):
- 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.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Indien
true, wordt het servercertificaat geverifieerd aan de hand van de lijst met opgegeven CA’s.
- Indien
OVERLEAF_LDAP_CACHE- Indien
true, worden maximaal 100 inloggegevens tegelijk gedurende 5 minuten gecachet.
- Indien
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_ATTenOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Wanneer beide omgevingsvariabelen zijn ingesteld, zet het aanmeldproces
user.isAdmin = trueals het LDAP-profiel het attribuut bevat dat is opgegeven inOVERLEAF_LDAP_IS_ADMIN_ATTen de waarde daarvan overeenkomt metOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEof een array is dieOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEbevat; anders wordtuser.isAdminingesteld opfalse. Als een van deze variabelen niet is ingesteld, wordt de beheerdersstatus alleen optruegezet bij het aanmaken van de beheerder in Launchpad.
- Wanneer beide omgevingsvariabelen zijn ingesteld, zet het aanmeldproces
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.
- 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_SEARCH_BASE- Geeft de basis-DN op van waaruit naar contacten wordt gezocht. Standaard
OVERLEAF_LDAP_SEARCH_BASE.
- Geeft de basis-DN op van waaruit naar contacten wordt gezocht. Standaard
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- Het bereik van de zoekopdracht kan
base,oneofsub(standaard) zijn.
- Het bereik van de zoekopdracht kan
OVERLEAF_LDAP_CONTACTS_PROPERTY- Geeft de eigenschap van het gebruikersobject op die de placeholder ‘{{userProperty}}’ in
OVERLEAF_LDAP_CONTACTS_FILTERvervangt.
- Geeft de eigenschap van het gebruikersobject op die de placeholder ‘{{userProperty}}’ in
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Geeft de waarde van
OVERLEAF_LDAP_CONTACTS_PROPERTYop 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.
- Geeft de waarde van
Voorbeeld
Voorbeeld
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.Voorbeeld van een variables.env-bestand
Voorbeeld van een variables.env-bestand
Stap voor stap: goauthentik
Hieronder doorlopen we een setup die is getest met goauthentik. De voorbeelden gebruiken de Base DNdc=example,dc=com; vervang deze door je eigen.
Maak een bind-account aan
ldapservice, en klik op Create:
Authentik: het bind-account aanmaken
OVERLEAF_LDAP_BIND_CREDENTIALS:
Authentik: het wachtwoord van het bind-account instellen (testinstantie)
19 in …/#/identity/users/19. Je hebt het nodig in stap 3.Maak de provider en de applicatie aan
overleaf-ldap, en klik op Next:
Authentik: naam en slug van de applicatie

Authentik: de LDAP-provider kiezen

Authentik: bind- en zoekmodus van de LDAP-provider
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
Laat het bind-account de directory doorzoeken
ak-managed-role--user-<number> en schakel daarna Search full LDAP directory in:
Authentik: het bind-account de zoekmachtiging geven (testinstantie)

Authentik: machtigingen van een LDAP-provider (testinstantie)
Start de LDAP-outpost

Authentik: een draaiende LDAP-outpost (testinstantie)
Vul de DN's in

Authentik: overzicht van een LDAP-provider (testinstantie)
- 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>.
Controleer de zoekopdracht
dn: tonen:dn: betekent meestal dat de machtiging uit stap 3 ontbreekt.Koppel de beheerders (optioneel)
memberOf, als DN’s onder ou=groups. Om de leden van de Authentik-groep Admins beheerder van Overleaf te maken:Geteste variables.env voor goauthentik
Geteste variables.env voor goauthentik

