> ## 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>
  Denne funksjonen er utviklet av [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Her tilbyr vi litt dokumentasjon for konfigurasjonen din.
</Info>

<Warning>
  Overleaf bruker biblioteket **passport-ldapauth**, som er relativt utdatert, så LDAP-kompatibilitet kan ikke garanteres fullt ut. Med enkelte LDAP-identitetsleverandører (for eksempel [https://goauthentik.io/](https://goauthentik.io/)) kan innlogging mislykkes. Hvis mulig anbefales det derfor å bruke OAuth/SAML i stedet. For goauthentik kan du følge [Trinn for trinn: goauthentik](/no/on-premises/configuration/overleaf-toolkit/authentication/ldap-authentication#trinn-for-trinn-goauthentik) nedenfor, som er testet.
</Warning>

### Hva er LDAP

LDAP er en autentiseringsprotokoll som brukes til ekstern identitetsverifisering. Overleaf Server Pro har et eget LDAP-innloggingsskjema i webgrensesnittet, atskilt fra standard autentiseringsmetode. Når en bruker sender inn LDAP-brukernavn og -passord, verifiserer Overleaf-backend legitimasjonen mot den konfigurerte LDAP-serveren, for eksempel `ldap://ldap:10389`.

<Frame caption="Et Server Pro-eksempel for 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>

### Konfigurasjon

Internt bruker Overleaf LDAP biblioteket [passport-ldapauth](https://github.com/vesse/passport-ldapauth). De fleste av disse konfigurasjonsalternativene sendes videre til konfigurasjonsobjektet `server`, som brukes til å konfigurere `passport-ldapauth`. Hvis du har problemer med å konfigurere LDAP, er det verdt å lese README-filen for `passport-ldapauth` for å få et inntrykk av hvilken konfigurasjon den forventer.

Miljøvariabelen `EXTERNAL_AUTH` kreves for å aktivere LDAP-autentiseringsmodulen. Denne miljøvariabelen angir hvilke eksterne autentiseringsmetoder som er aktivert. Verdien av variabelen er en liste. Hvis listen inneholder `ldap`, aktiveres LDAP-autentisering.

For eksempel: `EXTERNAL_AUTH=ldap saml`

I motsetning til Overleaf CEP begrenser vi i ayaka-notes-utgaven LDAP-autentisering til en ren autentiseringsmetode, som er tilgjengelig på `http://your-overleaf.com/ldap/login`.

Når LDAP-autentisering brukes og en bruker skriver inn `username` og `password` i innloggingsskjemaet, skjer følgende:

1. Det søkes etter en LDAP-bruker i LDAP-katalogen med filteret definert av `OVERLEAF_LDAP_SEARCH_FILTER`, og brukeren autentiseres.
2. Hvis autentiseringen lykkes, søkes det i Overleafs brukerdatabase etter en bruker med en primær e-postadresse som samsvarer med e-postadressen til den autentiserte LDAP-brukeren:
   * Hvis en samsvarende bruker blir funnet, slettes feltet `hashedPassword` for denne brukeren (hvis det finnes). Dette sikrer at brukeren heretter bare kan logge inn via LDAP-autentisering.
   * Hvis ingen samsvarende bruker blir funnet, opprettes en ny Overleaf-bruker med e-postadressen, fornavnet og etternavnet som hentes fra LDAP-serveren.

<Danger>
  For brukere som logger inn via LDAP, lagrer vi ikke hashede passord i Overleafs Mongo-database (eksisterende fjernes).
</Danger>

#### Miljøvariabler

* `OVERLEAF_LDAP_URL` <strong>(påkrevd)</strong>
  * URL-en til LDAP-serveren.
    * Eksempel: `ldaps://ldap.example.com:636` (LDAP over SSL)
    * Eksempel: `ldap://ldap.example.com:389` (ukryptert eller STARTTLS, hvis konfigurert).
* `OVERLEAF_LDAP_IDENTITY_SERVICE_NAME`
  * Visningsnavn for LDAP-identitetstjenesten, brukt på innloggingssiden.
  * Standard er `Log in with LDAP Provider`.
* `OVERLEAF_LDAP_EMAIL_ATT`
  * E-postattributtet som returneres av LDAP-serveren, standard `mail`. Hver LDAP-bruker må ha minst én e-postadresse. Hvis flere adresser oppgis, brukes bare den første.
* `OVERLEAF_LDAP_FIRST_NAME_ATT`
  * Navnet på egenskapen som inneholder brukerens fornavn som brukes i applikasjonen, vanligvis `givenName`.
* `OVERLEAF_LDAP_LAST_NAME_ATT`
  * Navnet på egenskapen som inneholder brukerens etternavn som brukes i applikasjonen, vanligvis `sn`.
* `OVERLEAF_LDAP_NAME_ATT`
  * Navnet på egenskapen som inneholder brukerens fulle navn, vanligvis `cn`. Hvis en av de to foregående variablene ikke er definert, hentes brukerens fornavn og/eller etternavn fra denne variabelen. Ellers brukes den ikke.
* `OVERLEAF_LDAP_PLACEHOLDER`
  * Plassholderteksten for innloggingsskjemaet, standard er `Username`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Hvis satt til `true`, oppdateres LDAP-brukerens felt `first_name` og `last_name` ved innlogging, og skjemaet for brukerdetaljer på siden `/user/settings` slås av for LDAP-brukere. Ellers hentes detaljene bare ved første innlogging.
* `OVERLEAF_LDAP_BIND_DN`
  * Det unike navnet (DN) til LDAP-brukeren som skal brukes for LDAP-tilkoblingen (denne brukeren må kunne søke etter/liste kontoer på LDAP-serveren), f.eks. `cn=ldap_reader,dc=example,dc=com`. Hvis den ikke er definert, brukes anonym binding.
* `OVERLEAF_LDAP_BIND_CREDENTIALS`
  * Passord for `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * Brukeregenskapen som skal bindes mot klienten, standard er `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` <strong>(påkrevd)</strong>
  * Basis-DN-en det skal søkes etter brukere fra. F.eks. `ou=people,dc=example,dc=com`.
* `OVERLEAF_LDAP_SEARCH_FILTER`
  * LDAP-søkefilter som brukes til å finne en bruker. Bruk literalen '\{\{username}}' for å få det oppgitte brukernavnet interpolert inn i LDAP-søket.
    * Eksempel: `(|(uid={{username}})(mail={{username}}))` (brukeren kan logge inn med e-post eller brukernavn).
    * Eksempel: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Søkeomfanget kan være `base`, `one` eller `sub` (standard).
* `OVERLEAF_LDAP_SEARCH_ATTRIBUTES`
  * JSON-matrise med attributter som skal hentes fra LDAP-serveren, f.eks. `["uid", "mail", "givenName", "sn"]`. Som standard hentes alle attributter.
* `OVERLEAF_LDAP_STARTTLS`
  * Hvis `true`, brukes LDAP over TLS.
* `OVERLEAF_LDAP_TLS_OPTS_CA_PATH`
  * Sti til filen som inneholder CA-sertifikatet som brukes til å verifisere LDAP-serverens SSL/TLS-sertifikat. Hvis det finnes flere sertifikater, kan det være en JSON-matrise med stier til sertifikatene. Filene må være tilgjengelige for Docker-containeren.
    * Eksempel (ett sertifikat): `/var/lib/overleaf/certs/ldap_ca_cert.pem`
    * Eksempel (flere sertifikater): `["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]`
* `OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH`
  * Hvis `true`, verifiseres serversertifikatet mot listen over oppgitte CA-er.
* `OVERLEAF_LDAP_CACHE`
  * Hvis `true`, hurtigbufres opptil 100 legitimasjoner om gangen i 5 minutter.
* `OVERLEAF_LDAP_TIMEOUT`
  * Hvor lenge klienten skal la operasjoner pågå før tidsavbrudd, i ms (standard: Infinity).
* `OVERLEAF_LDAP_CONNECT_TIMEOUT`
  * Hvor lenge klienten skal vente før tidsavbrudd på TCP-tilkoblinger, i ms (standard: operativsystemets standard).
* `OVERLEAF_LDAP_IS_ADMIN_ATT` og `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`
  * Når begge miljøvariablene er angitt, setter innloggingsprosessen `user.isAdmin = true` hvis LDAP-profilen inneholder attributtet angitt av `OVERLEAF_LDAP_IS_ADMIN_ATT` og verdien enten samsvarer med `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE` eller er en matrise som inneholder `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`; ellers settes `user.isAdmin` til `false`. Hvis en av disse variablene ikke er angitt, settes administratorstatusen bare til `true` når administratorbrukeren opprettes i Launchpad.

De følgende fem variablene brukes til å konfigurere hvordan brukerkontakter hentes fra LDAP-serveren.

* `OVERLEAF_LDAP_CONTACTS_FILTER`
  * Filteret som brukes til å søke etter brukere på LDAP-serveren som skal lastes inn i kontaktene. Plassholderen '\{\{userProperty}}' i filteret erstattes med verdien av egenskapen angitt av `OVERLEAF_LDAP_CONTACTS_PROPERTY` fra LDAP-brukeren som starter søket. Hvis den ikke er definert, hentes ingen brukere fra LDAP-serveren inn i kontaktene.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_BASE`
  * Angir basis-DN-en som søket etter kontakter skal starte fra. Standard er `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Søkeomfanget kan være `base`, `one` eller `sub` (standard).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * Angir egenskapen i brukerobjektet som skal erstatte plassholderen '\{\{userProperty}}' i `OVERLEAF_LDAP_CONTACTS_FILTER`.
* `OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE`
  * Angir verdien av `OVERLEAF_LDAP_CONTACTS_PROPERTY` hvis søket startes av en bruker som ikke er LDAP-bruker. Hvis denne variabelen ikke er definert, vil det resulterende filteret ikke samsvare med noe. Verdien `*` kan brukes som jokertegn.

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

  Eksempelet ovenfor fører til at alle LDAP-brukere med samme UNIX-`gid` lastes inn i kontaktene til den gjeldende LDAP-brukeren. Brukere som ikke er LDAP-brukere, får alle LDAP-brukere med UNIX `gid=1000` i kontaktene sine.
</Accordion>

<Accordion title="Eksempel 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>

## Trinn for trinn: goauthentik

Dette er en gjennomgang av et oppsett som er testet mot [goauthentik](https://goauthentik.io/). Eksemplene bruker Base DN `dc=example,dc=com`; erstatt den med din egen.

<Steps>
  <Step title="Opprett en bind-konto">
    Overleaf logger først inn i katalogen med en egen konto for å finne brukeren. I Authentik åpner du **Directory > Users**, klikker **New User**, velger **Internal User** og klikker **Next**. Skriv inn et brukernavn, for eksempel `ldapservice`, og klikk **Create**:

    <Frame caption="Authentik: opprett bind-kontoen">
      <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>

    Åpne den nye brukeren og klikk **Set password**. Dette passordet skal inn i `OVERLEAF_LDAP_BIND_CREDENTIALS`:

    <div style={{ textAlign: "center" }}>
      <Frame caption="Authentik: angi passordet for bind-kontoen (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>

    Merk deg nummeret til brukeren i adressefeltet, for eksempel `19` i `…/#/identity/users/19`. Du trenger det i trinn 3.
  </Step>

  <Step title="Opprett leverandøren og applikasjonen">
    Åpne **Applications > Applications** og klikk **New Application**. Veiviseren oppretter applikasjonen og leverandøren samtidig.

    1\. Gi applikasjonen et navn og en slug, for eksempel `overleaf-ldap`, og klikk **Next**:

    <Frame caption="Authentik: navn og slug for applikasjonen">
      <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\. Velg **LDAP Provider** og klikk **Next**:

    <Frame caption="Authentik: velg LDAP-leverandø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\. Sett **Bind Mode** til **Direct binding** og **Search Mode** til **Direct querying**:

    <Frame caption="Authentik: bind- og søkemodus for LDAP-leverandø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\. Lenger ned setter du **Bind Flow** til `default-authentication-flow` og **Base DN** til din Base DN, for eksempel `dc=example,dc=com`:

    <Frame caption="Authentik: bind-flyt og Base DN for LDAP-leverandø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\. Klikk **Next** til siste side og send inn applikasjonen.
  </Step>

  <Step title="La bind-kontoen søke i katalogen">
    Uten denne tillatelsen ser bind-kontoen bare seg selv, søket finner ingen bruker, og alle LDAP-innlogginger mislykkes.

    Åpne leverandøren, gå til **Permissions** og klikk **Assign Role Object Permission**. Under **Role** skriver du inn nummeret fra trinn 1 og velger `ak-managed-role--user-<number>`, og deretter slår du på **Search full LDAP directory**:

    <Frame caption="Authentik: gi bind-kontoen søketillatelsen (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 viser deretter en hake under **Search full LDAP directory**:

    <Frame caption="Authentik: tillatelser for en LDAP-leverandø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="Kjør LDAP-outposten">
    Authentik svarer på LDAP gjennom en outpost, en separat container. Åpne **Applications > Outposts**, opprett en outpost av typen **LDAP** med leverandøren din, og distribuer den slik Authentik beskriver. Den lytter på port 389 på verten den kjører på. Når den er tilkoblet, viser den en grønn hake:

    <Frame caption="Authentik: en kjørende 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 inn DN-ene">
    Leverandørsiden viser Base DN og et eksempel under **How to connect**:

    <Frame caption="Authentik: oversikt over en LDAP-leverandø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>

    Ikke kopier eksempelverdiene som de er:

    * **Bind DN** viser kontoen du er logget inn med. Bruk i stedet bind-kontoen fra trinn 1: `cn=ldapservice,ou=users,<Base DN>`.
    * **Search base** viser Base DN. Bruk `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 gruppe med samme navn som hver bruker under `ou=virtual-groups`. Et søk i hele Base DN etter `(cn=alice)` finner både `cn=alice,ou=users,…` og `cn=alice,ou=virtual-groups,…`, og Overleaf avviser en innlogging som samsvarer med mer enn én oppføring. Behold søkebasen på `ou=users,<Base DN>`.
    </Warning>
  </Step>

  <Step title="Kontroller søket">
    Før du starter Overleaf, kjører du søket som Overleaf vil utføre. Det må skrive ut nøyaktig én `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:` i det hele tatt betyr vanligvis at tillatelsen fra trinn 3 mangler.
  </Step>

  <Step title="Tilordne administratorene (valgfritt)">
    Gruppene til en bruker ligger i `memberOf`, som DN-er under `ou=groups`. Slik gjør du medlemmene av Authentik-gruppen `Admins` til administratorer 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>
      Administratorflagget oppdateres ved hver LDAP-innlogging. Med feil attributt eller verdi mister alle administratorer som logger inn via LDAP administratorrettighetene. Test tilordningen med en ekstra administratorkonto først.
    </Warning>
  </Step>
</Steps>

<Accordion title="Testet variables.env for 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.