Skip to main content
Den här funktionen är utvecklad av yu-i-i/overleaf-cep. Här tillhandahåller vi dokumentation för din konfiguration.
Overleaf använder biblioteket passport-ldapauth, som är relativt föråldrat, och LDAP-kompatibilitet kan därför inte garanteras fullt ut. Med vissa LDAP-identitetsleverantörer (till exempel https://goauthentik.io/) kan inloggningsfel uppstå. Om möjligt rekommenderas det därför att i första hand använda OAuth/SAML. För goauthentik, följ Steg för steg: goauthentik nedan, som har testats.

Vad är LDAP

LDAP är ett autentiseringsprotokoll som används för extern identitetsverifiering. Overleaf Server Pro tillhandahåller ett särskilt LDAP-inloggningsformulär i webbgränssnittet, separat från standardautentiseringsmetoden. När en användare skickar in sitt LDAP-användarnamn och lösenord verifierar Overleafs backend inloggningsuppgifterna mot den konfigurerade LDAP-servern, till exempel ldap://ldap:10389.

Ett Server Pro-exempel för LDAP

Konfiguration

Internt använder Overleafs LDAP-stöd biblioteket passport-ldapauth. De flesta av dessa konfigurationsalternativ skickas vidare till konfigurationsobjektet server, som används för att konfigurera passport-ldapauth. Om du har problem med att konfigurera LDAP är det värt att läsa README-filen för passport-ldapauth för att få en känsla för vilken konfiguration den förväntar sig. Miljövariabeln EXTERNAL_AUTH krävs för att aktivera LDAP-autentiseringsmodulen. Den här miljövariabeln anger vilka externa autentiseringsmetoder som är aktiverade. Variabelns värde är en lista. Om listan innehåller ldap aktiveras LDAP-autentisering. Till exempel: EXTERNAL_AUTH=ldap saml Till skillnad från Overleaf CEP begränsar vi i vår ayaka-notes-utgåva LDAP-autentisering till en ren autentiseringsmetod, som finns tillgänglig på http://your-overleaf.com/ldap/login. När LDAP-autentisering används och en användare anger ett username och password i inloggningsformuläret görs följande försök:
  1. En LDAP-användare söks upp i LDAP-katalogen med det filter som definieras av OVERLEAF_LDAP_SEARCH_FILTER och autentiseras.
  2. Om autentiseringen lyckas söks Overleafs användardatabas igenom efter en användare vars primära e-postadress matchar e-postadressen för den autentiserade LDAP-användaren:
    • Om en matchande användare hittas raderas fältet hashedPassword för denna användare (om det finns). Detta säkerställer att användaren i fortsättningen endast kan logga in via LDAP-autentisering.
    • Om ingen matchande användare hittas skapas en ny Overleaf-användare med den e-postadress, det förnamn och det efternamn som hämtats från LDAP-servern.
För användare som loggar in via LDAP lagrar vi inte (och tar bort befintliga) hashade lösenord i Overleafs Mongo-databas.

Miljövariabler

  • OVERLEAF_LDAP_URL (obligatorisk)
    • URL till LDAP-servern.
      • Exempel: ldaps://ldap.example.com:636 (LDAP över SSL)
      • Exempel: ldap://ldap.example.com:389 (okrypterad eller STARTTLS, om det är konfigurerat).
  • OVERLEAF_LDAP_IDENTITY_SERVICE_NAME
    • Visningsnamn för LDAP-identitetstjänsten, som används på inloggningssidan.
    • Standardvärde: Log in with LDAP Provider.
  • OVERLEAF_LDAP_EMAIL_ATT
    • E-postattributet som returneras av LDAP-servern, standard mail. Varje LDAP-användare måste ha minst en e-postadress. Om flera adresser anges används endast den första.
  • OVERLEAF_LDAP_FIRST_NAME_ATT
    • Namnet på egenskapen som innehåller användarens förnamn som används i applikationen, vanligtvis givenName.
  • OVERLEAF_LDAP_LAST_NAME_ATT
    • Namnet på egenskapen som innehåller användarens efternamn som används i applikationen, vanligtvis sn.
  • OVERLEAF_LDAP_NAME_ATT
    • Namnet på egenskapen som innehåller användarens fullständiga namn, vanligtvis cn. Om någon av de två föregående variablerna inte är definierad extraheras användarens förnamn och/eller efternamn från denna variabel. Annars används den inte.
  • OVERLEAF_LDAP_PLACEHOLDER
    • Platshållartexten för inloggningsformuläret, standard Username.
  • OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN
    • Om värdet är true uppdateras LDAP-användarens fält first_name och last_name vid inloggning, och formuläret för användaruppgifter på sidan /user/settings stängs av för LDAP-användare. Annars hämtas uppgifterna endast vid första inloggningen.
  • OVERLEAF_LDAP_BIND_DN
    • Det unika namnet (DN) för den LDAP-användare som ska användas för LDAP-anslutningen (användaren ska kunna söka efter/lista konton på LDAP-servern), t.ex. cn=ldap_reader,dc=example,dc=com. Om det inte är definierat används anonym bindning.
  • OVERLEAF_LDAP_BIND_CREDENTIALS
    • Lösenord för OVERLEAF_LDAP_BIND_DN.
  • OVERLEAF_LDAP_BIND_PROPERTY
    • Den egenskap hos användaren som används för bindning mot klienten, standard dn.
  • OVERLEAF_LDAP_SEARCH_BASE (obligatorisk)
    • Bas-DN från vilket användare söks. T.ex. ou=people,dc=example,dc=com.
  • OVERLEAF_LDAP_SEARCH_FILTER
    • LDAP-sökfilter som används för att hitta en användare. Använd literalen ‘{{username}}’ för att det angivna användarnamnet ska infogas i LDAP-sökningen.
      • Exempel: (|(uid={{username}})(mail={{username}})) (användaren kan logga in med e-postadress eller inloggningsnamn).
      • Exempel: (sAMAccountName={{username}}) (Active Directory).
  • OVERLEAF_LDAP_SEARCH_SCOPE
    • Sökningens omfång kan vara base, one eller sub (standard).
  • OVERLEAF_LDAP_SEARCH_ATTRIBUTES
    • JSON-array med attribut som ska hämtas från LDAP-servern, t.ex. ["uid", "mail", "givenName", "sn"]. Som standard hämtas alla attribut.
  • OVERLEAF_LDAP_STARTTLS
    • Om värdet är true används LDAP över TLS.
  • OVERLEAF_LDAP_TLS_OPTS_CA_PATH
    • Sökväg till filen som innehåller CA-certifikatet som används för att verifiera LDAP-serverns SSL/TLS-certifikat. Om det finns flera certifikat kan värdet vara en JSON-array med sökvägar till certifikaten. Filerna måste vara åtkomliga för Docker-containern.
      • Exempel (ett certifikat): /var/lib/overleaf/certs/ldap_ca_cert.pem
      • Exempel (flera certifikat): ["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
  • OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH
    • Om värdet är true verifieras servercertifikatet mot listan över angivna CA:er.
  • OVERLEAF_LDAP_CACHE
    • Om värdet är true cachas upp till 100 inloggningsuppgifter åt gången i 5 minuter.
  • OVERLEAF_LDAP_TIMEOUT
    • Hur länge klienten ska låta operationer pågå innan de avbryts på grund av tidsgräns, i ms (standard: Infinity).
  • OVERLEAF_LDAP_CONNECT_TIMEOUT
    • Hur länge klienten ska vänta innan TCP-anslutningar avbryts på grund av tidsgräns, i ms (standard: operativsystemets standardvärde).
  • OVERLEAF_LDAP_IS_ADMIN_ATT och OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE
    • När båda miljövariablerna är angivna sätter inloggningsprocessen user.isAdmin = true om LDAP-profilen innehåller det attribut som anges av OVERLEAF_LDAP_IS_ADMIN_ATT och dess värde antingen matchar OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE eller är en array som innehåller OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; annars sätts user.isAdmin till false. Om någon av dessa variabler inte är angiven sätts administratörsstatusen till true endast när administratörsanvändaren skapas i Launchpad.
Följande fem variabler används för att konfigurera hur användarkontakter hämtas från LDAP-servern.
  • OVERLEAF_LDAP_CONTACTS_FILTER
    • Filtret som används för att söka efter användare på LDAP-servern som ska läsas in som kontakter. Platshållaren ‘{{userProperty}}’ i filtret ersätts med värdet av den egenskap som anges av OVERLEAF_LDAP_CONTACTS_PROPERTY hos den LDAP-användare som initierar sökningen. Om det inte är definierat hämtas inga användare från LDAP-servern till kontakterna.
  • OVERLEAF_LDAP_CONTACTS_SEARCH_BASE
    • Anger det bas-DN från vilket sökningen efter kontakter ska börja. Standardvärdet är OVERLEAF_LDAP_SEARCH_BASE.
  • OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE
    • Sökningens omfång kan vara base, one eller sub (standard).
  • OVERLEAF_LDAP_CONTACTS_PROPERTY
    • Anger den egenskap hos användarobjektet som ersätter platshållaren ‘{{userProperty}}’ i OVERLEAF_LDAP_CONTACTS_FILTER.
  • OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE
    • Anger värdet för OVERLEAF_LDAP_CONTACTS_PROPERTY om sökningen initieras av en användare som inte är LDAP-användare. Om variabeln inte är definierad matchar det resulterande filtret ingenting. Värdet * kan användas som jokertecken.
Exemplet ovan leder till att alla LDAP-användare som har samma UNIX-gid läses in i den aktuella LDAP-användarens kontakter. Användare som inte är LDAP-användare får alla LDAP-användare med UNIX-gid=1000 i sina kontakter.

Steg för steg: goauthentik

Här går vi igenom en konfiguration som har testats mot goauthentik. Exemplen använder Base DN dc=example,dc=com; ersätt det med ditt eget.
1

Skapa ett bind-konto

Overleaf loggar först in i katalogen med ett eget konto för att hitta användaren. Öppna Directory > Users i Authentik, klicka på New User, välj Internal User och klicka på Next. Ange ett användarnamn, till exempel ldapservice, och klicka på Create:

Authentik: skapa bind-kontot

Öppna den nya användaren och klicka på Set password. Det här lösenordet anges i OVERLEAF_LDAP_BIND_CREDENTIALS:

Authentik: ange lösenordet för bind-kontot (testinstans)

Notera användarens nummer i adressfältet, till exempel 19 i …/#/identity/users/19. Du behöver det i steg 3.
2

Skapa leverantören och applikationen

Öppna Applications > Applications och klicka på New Application. Guiden skapar applikationen och dess leverantör samtidigt.1. Ge applikationen ett namn och en slug, till exempel overleaf-ldap, och klicka på Next:

Authentik: applikationens namn och slug

2. Välj LDAP Provider och klicka på Next:

Authentik: välj LDAP-leverantören

3. Sätt Bind Mode till Direct binding och Search Mode till Direct querying:

Authentik: bind- och sökläge för LDAP-leverantören

4. Längre ned sätter du Bind Flow till default-authentication-flow och Base DN till ditt Base DN, till exempel dc=example,dc=com:

Authentik: bind-flöde och Base DN för LDAP-leverantören

5. Klicka på Next fram till sista sidan och skicka in applikationen.
3

Låt bind-kontot söka i katalogen

Utan den här behörigheten ser bind-kontot bara sig självt, sökningen hittar ingen användare och varje LDAP-inloggning misslyckas.Öppna leverantören, gå till Permissions och klicka på Assign Role Object Permission. Under Role skriver du numret från steg 1 och väljer ak-managed-role--user-<number>, och aktiverar sedan Search full LDAP directory:

Authentik: ge bind-kontot sökbehörighet (testinstans)

Rollen visar då en bock under Search full LDAP directory:

Authentik: behörigheter för en LDAP-leverantör (testinstans)

4

Kör LDAP-outposten

Authentik svarar på LDAP via en outpost, en separat container. Öppna Applications > Outposts, skapa en outpost av typen LDAP med din leverantör och driftsätt den enligt Authentiks beskrivning. Den lyssnar på port 389 på värden där den körs. När den är ansluten visas en grön bock:

Authentik: en körande LDAP-outpost (testinstans)

5

Fyll i DN:erna

Leverantörssidan visar Base DN och ett exempel under How to connect:

Authentik: översikt över en LDAP-leverantör (testinstans)

Kopiera inte exempelvärdena som de är:
  • Bind DN visar kontot du är inloggad med. Använd i stället bind-kontot från steg 1: cn=ldapservice,ou=users,<Base DN>.
  • Search base visar Base DN. Använd ou=users,<Base DN>.
Authentik har en grupp med samma namn som varje användare under ou=virtual-groups. En sökning efter (cn=alice) i hela Base DN hittar både cn=alice,ou=users,… och cn=alice,ou=virtual-groups,…, och Overleaf nekar en inloggning som matchar mer än en post. Behåll sökbasen på ou=users,<Base DN>.
6

Kontrollera sökningen

Innan du startar Overleaf kör du samma sökning som Overleaf kommer att göra. Den måste skriva ut exakt en dn::
Ingen dn: alls betyder oftast att behörigheten från steg 3 saknas.
7

Mappa administratörerna (valfritt)

En användares grupper finns i memberOf, som DN:er under ou=groups. Så här gör du medlemmarna i Authentik-gruppen Admins till administratörer i Overleaf:
Administratörsflaggan uppdateras vid varje LDAP-inloggning. Med fel attribut eller värde förlorar varje administratör som loggar in via LDAP sina administratörsrättigheter. Testa mappningen med ett andra administratörskonto först.
variables.env
Senast ändrad 6 oktober 2026