> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# LDAP-autentisering

<Info>
  Den här funktionen är utvecklad av [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Här tillhandahåller vi dokumentation för din konfiguration.
</Info>

<Warning>
  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/](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](/sv/on-premises/configuration/overleaf-toolkit/authentication/ldap-authentication#steg-för-steg-goauthentik) nedan, som har testats.
</Warning>

### 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`.

<Frame caption="Ett Server Pro-exempel för LDAP">
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/on-premises/image-29.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=f3ebcacecec45115cf9b1fa55eb1ba94" alt="" width="2804" height="2005" data-path="images/on-premises/image-29.png" />
</Frame>

### Konfiguration

Internt använder Overleafs LDAP-stöd biblioteket [passport-ldapauth](https://github.com/vesse/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.

<Danger>
  För användare som loggar in via LDAP lagrar vi inte (och tar bort befintliga) hashade lösenord i Overleafs Mongo-databas.
</Danger>

#### Miljövariabler

* `OVERLEAF_LDAP_URL` <strong>(obligatorisk)</strong>
  * 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` <strong>(obligatorisk)</strong>
  * 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.

<Accordion title="Exempel">
  ```text theme={null}
  OVERLEAF_LDAP_CONTACTS_FILTER=(gidNumber={{userProperty}})
  OVERLEAF_LDAP_CONTACTS_PROPERTY=gidNumber
  OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE=1000
  ```

  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.
</Accordion>

<Accordion title="Exempel på variables.env-fil">
  ```text theme={null}
  OVERLEAF_APP_NAME="Our Overleaf Instance"

  ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

  # Enables Thumbnail generation using ImageMagick
  ENABLE_CONVERSIONS=true

  # Disables email confirmation requirement
  EMAIL_CONFIRMATION_DISABLED=true

  ## Nginx
  # NGINX_WORKER_PROCESSES=4
  # NGINX_WORKER_CONNECTIONS=768

  ## Set for TLS via nginx-proxy
  # OVERLEAF_BEHIND_PROXY=true
  # OVERLEAF_SECURE_COOKIE=true

  OVERLEAF_SITE_URL=http://my-overleaf-instance.com
  OVERLEAF_NAV_TITLE=Our Overleaf Instance
  # OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.png
  OVERLEAF_ADMIN_EMAIL=support@example.com

  OVERLEAF_LEFT_FOOTER=[{"text": "Contact your support team", "url": "mailto:support@example.com"}]
  OVERLEAF_RIGHT_FOOTER=[{"text":"Hello, I am on the Right", "url":"https://github.com/yu-i-i/overleaf-cep"}]

  OVERLEAF_EMAIL_FROM_ADDRESS=team@example.com
  OVERLEAF_EMAIL_SMTP_HOST=smtp.example.com
  OVERLEAF_EMAIL_SMTP_PORT=587
  OVERLEAF_EMAIL_SMTP_SECURE=false
  # OVERLEAF_EMAIL_SMTP_USER=
  # OVERLEAF_EMAIL_SMTP_PASS=
  # OVERLEAF_EMAIL_SMTP_NAME=
  OVERLEAF_EMAIL_SMTP_LOGGER=false
  OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=true
  OVERLEAF_EMAIL_SMTP_IGNORE_TLS=false
  OVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department x

  OVERLEAF_PROXY_LEARN=true
  NAV_HIDE_POWERED_BY=true

  #################
  ## LDAP for CE ##
  #################

  EXTERNAL_AUTH=ldap
  OVERLEAF_LDAP_URL=ldap://ldap.example.com:389
  OVERLEAF_LDAP_STARTTLS=true
  OVERLEAF_LDAP_TLS_OPTS_CA_PATH=/var/lib/overleaf/certs/ldap_ca_cert.pem
  OVERLEAF_LDAP_SEARCH_BASE=ou=people,dc=example,dc=com
  OVERLEAF_LDAP_SEARCH_FILTER=(|(uid={{username}})(mail={{username}}))
  OVERLEAF_LDAP_BIND_DN=cn=ldap_reader,dc=example,dc=com
  OVERLEAF_LDAP_BIND_CREDENTIALS=GoodNewsEveryone
  OVERLEAF_LDAP_EMAIL_ATT=mail
  OVERLEAF_LDAP_FIRST_NAME_ATT=givenName
  OVERLEAF_LDAP_LAST_NAME_ATT=sn
  # OVERLEAF_LDAP_NAME_ATT=cn
  OVERLEAF_LDAP_SEARCH_ATTRIBUTES=["uid", "sn", "givenName", "mail"]

  OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN=true

  OVERLEAF_LDAP_PLACEHOLDER='Username or email address'

  OVERLEAF_LDAP_IS_ADMIN_ATT=mail
  OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE=admin@example.com

  OVERLEAF_LDAP_CONTACTS_FILTER=(gidNumber={{userProperty}})
  OVERLEAF_LDAP_CONTACTS_PROPERTY=gidNumber
  OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE='*'
  ```
</Accordion>

## Steg för steg: goauthentik

Här går vi igenom en konfiguration som har testats mot [goauthentik](https://goauthentik.io/). Exemplen använder Base DN `dc=example,dc=com`; ersätt det med ditt eget.

<Steps>
  <Step title="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**:

    <Frame caption="Authentik: skapa bind-kontot">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-user-create.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=bf5d9a5aefd048781339157121a9e203" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-user-create.png" />
    </Frame>

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

    <div style={{ textAlign: "center" }}>
      <Frame caption="Authentik: ange lösenordet för bind-kontot (testinstans)">
        <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-user-page.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=96aad0f919dc8e74fef5995b1dde1e78" alt="" width="207" data-path="images/on-premises/ldap-authentik-user-page.png" />
      </Frame>
    </div>

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

  <Step title="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**:

    <Frame caption="Authentik: applikationens namn och slug">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-app.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=0d3e6b54e9bf552bd81d8b1d6b722701" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-app.png" />
    </Frame>

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

    <Frame caption="Authentik: välj LDAP-leverantören">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-type.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=ee63f2682051572a08c1f5bc321a1af6" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-type.png" />
    </Frame>

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

    <Frame caption="Authentik: bind- och sökläge för LDAP-leverantören">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-modes.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=ea147f1605e76142021d07f775d5ef53" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-modes.png" />
    </Frame>

    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`:

    <Frame caption="Authentik: bind-flöde och Base DN för LDAP-leverantören">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-basedn.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=4ce418571d83294ee749d56b13c63d44" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-basedn.png" />
    </Frame>

    5\. Klicka på **Next** fram till sista sidan och skicka in applikationen.
  </Step>

  <Step title="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**:

    <Frame caption="Authentik: ge bind-kontot sökbehörighet (testinstans)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-assign.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=5af53c691ae845adcb4ede42c24fb600" alt="" width="1120" height="529" data-path="images/on-premises/ldap-authentik-assign.png" />
    </Frame>

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

    <Frame caption="Authentik: behörigheter för en LDAP-leverantör (testinstans)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-permissions.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=24ae7f0dfb6d19e1b3d6584d6ccf0f0b" alt="" width="990" height="488" data-path="images/on-premises/ldap-authentik-permissions.png" />
    </Frame>
  </Step>

  <Step title="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:

    <Frame caption="Authentik: en körande LDAP-outpost (testinstans)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-outposts.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=cd8af2f7df7b2df24d2369416509faef" alt="" width="990" height="468" data-path="images/on-premises/ldap-authentik-outposts.png" />
    </Frame>

    ```dotenv theme={null}
    OVERLEAF_LDAP_URL=ldap://ldap.example.com:389
    ```
  </Step>

  <Step title="Fyll i DN:erna">
    Leverantörssidan visar Base DN och ett exempel under **How to connect**:

    <Frame caption="Authentik: översikt över en LDAP-leverantör (testinstans)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-provider.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=9aa4b747f4c0f51533454a97d835c18c" alt="" width="990" height="773" data-path="images/on-premises/ldap-authentik-provider.png" />
    </Frame>

    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>`.

    ```dotenv theme={null}
    OVERLEAF_LDAP_BIND_DN=cn=ldapservice,ou=users,dc=example,dc=com
    OVERLEAF_LDAP_BIND_CREDENTIALS=<password of ldapservice>
    OVERLEAF_LDAP_SEARCH_BASE=ou=users,dc=example,dc=com
    OVERLEAF_LDAP_SEARCH_FILTER=(cn={{username}})
    ```

    <Warning>
      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>`.
    </Warning>
  </Step>

  <Step title="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:`:

    ```shell theme={null}
    ldapsearch -x -H ldap://ldap.example.com:389 \
      -D cn=ldapservice,ou=users,dc=example,dc=com -w '<password of ldapservice>' \
      -b ou=users,dc=example,dc=com '(cn=alice)' dn
    ```

    Ingen `dn:` alls betyder oftast att behörigheten från steg 3 saknas.
  </Step>

  <Step title="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:

    ```dotenv theme={null}
    OVERLEAF_LDAP_IS_ADMIN_ATT=memberOf
    OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE=cn=Admins,ou=groups,dc=example,dc=com
    ```

    <Warning>
      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.
    </Warning>
  </Step>
</Steps>

<Accordion title="Testad variables.env för goauthentik">
  ```dotenv title="variables.env" wrap theme={null}
  EXTERNAL_AUTH=ldap
  OVERLEAF_LDAP_IDENTITY_SERVICE_NAME=Log in with Authentik
  OVERLEAF_LDAP_URL=ldap://ldap.example.com:389
  OVERLEAF_LDAP_BIND_DN=cn=ldapservice,ou=users,dc=example,dc=com
  OVERLEAF_LDAP_BIND_CREDENTIALS=<password of ldapservice>
  OVERLEAF_LDAP_SEARCH_BASE=ou=users,dc=example,dc=com
  OVERLEAF_LDAP_SEARCH_FILTER=(cn={{username}})
  OVERLEAF_LDAP_EMAIL_ATT=mail
  OVERLEAF_LDAP_NAME_ATT=name
  OVERLEAF_LDAP_IS_ADMIN_ATT=memberOf
  OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE=cn=Admins,ou=groups,dc=example,dc=com
  OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN=true
  ```
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.