> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/on-premises-no/konfigurasjon/overleaf-toolkit/authentication/ldap-authentication.md).

# LDAP-autentisering

Denne funksjonen er utviklet av [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Her tilbyr vi noen dokumenter for konfigurasjonen din.

{% hint style="warning" %}
Overleaf bruker **passport-ldapauth** biblioteket, som er ganske utdatert, kan LDAP-kompatibilitet ikke garanteres fullt ut. Med enkelte LDAP-identitetsleverandører (for eksempel, <https://goauthentik.io/>), kan påloggingsfeil oppstå. Derfor anbefales det, hvis mulig, å bruke OAuth/SAML-metoden først.
{% endhint %}

### Hva er LDAP

LDAP er en autentiseringsprotokoll som brukes for ekstern identitetsverifisering. Overleaf Server Pro tilbyr et dedikert LDAP-innloggingsskjema i nettgrensesnittet, separat fra den vanlige autentiseringsmetoden. Når en bruker sender inn LDAP-brukernavnet og passordet sitt, verifiserer Overleaf-backenden legitimasjonen mot den konfigurerte LDAP-serveren, for eksempel `ldap://ldap:10389`.

<figure><img src="/files/ff26bd46be74194fb7f50ecf5be9dfce9688a47a" alt=""><figcaption><p>Et Server Pro-eksempel for LDAP</p></figcaption></figure>

### Konfigurasjon

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

Miljøvariabelen `EXTERNAL_AUTH` er påkrevd for å aktivere LDAP-autentiseringsmodulen. Denne miljøvariabelen angir hvilke eksterne autentiseringsmetoder som er aktivert. Verdien av denne variabelen er en liste. Hvis listen inneholder `ldap` så blir LDAP-autentisering aktivert.

For eksempel: `EXTERNAL_AUTH=ldap saml`

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

Når man bruker LDAP-autentiseringsmetoder, skriver en bruker inn et `brukernavn` og `passord` i påloggingsskjemaet, forsøkes det:

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

{% hint style="danger" %}
For brukere som logger inn via LDAP, lagrer vi ikke (eller fjerner eksisterende) hashede passord i Overleafs Mongo-database.
{% endhint %}

#### Miljøvariabler

* `OVERLEAF_LDAP_URL` **(påkrevd)**
  * 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, brukes på innloggingssiden.
  * Standardverdi: `Logg inn med LDAP-leverandør`.
* `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 og brukes i applikasjonen, vanligvis `givenName`.
* `OVERLEAF_LDAP_LAST_NAME_ATT`
  * Navnet på egenskapen som inneholder brukerens etternavn og 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`
  * Plassholderen for påloggingsskjemaet, standard er `Brukernavn`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Hvis satt til `true`, oppdaterer LDAP-brukeren `fornavn` og `etternavn` feltet ved innlogging, og slår av skjemaet for brukerdetaljer på `/user/settings` siden for LDAP-brukere. Ellers hentes detaljene bare ved første innlogging.
* `OVERLEAF_LDAP_BIND_DN`
  * Det distinkte navnet til LDAP-brukeren som skal brukes for LDAP-tilkoblingen (denne brukeren bør kunne søke i/oppføre kontoer på LDAP-serveren), f.eks., `cn=ldap_reader,dc=example,dc=com`. Hvis ikke definert, brukes anonym binding.
* `OVERLEAF_LDAP_BIND_CREDENTIALS`
  * Passord for `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * Brukerens egenskap som skal bindes mot klienten, standard er `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` **(påkrevd)**
  * Base-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 for å finne en bruker. Bruk den bokstavelige '{{username}}' for å få det angitte brukernavnet satt inn i LDAP-søket.
    * Eksempel: `(|(uid={{username}})(mail={{username}}))` (brukeren kan logge inn med e-post eller med innloggingsnavn).
    * Eksempel: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Søkeområdet kan være `base`, `én`, eller `sub` (standard).
* `OVERLEAF_LDAP_SEARCH_ATTRIBUTES`
  * JSON-array 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 er flere sertifikater, kan det være et JSON-array av 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`, caches opptil 100 påloggingsopplysninger om gangen i 5 minutter.
* `OVERLEAF_LDAP_TIMEOUT`
  * Hvor lenge klienten skal la operasjoner pågå før tidsavbrudd, ms (Standard: Infinity).
* `OVERLEAF_LDAP_CONNECT_TIMEOUT`
  * Hvor lenge klienten skal vente før TCP-tilkoblinger får tidsavbrudd, ms (Standard: OS-standard).
* `OVERLEAF_LDAP_IS_ADMIN_ATT` og `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`
  * Når begge miljøvariablene er satt, oppdaterer 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 array som inneholder `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`, ellers `user.isAdmin` settes til `false`. Hvis en av disse variablene ikke er satt, settes administratortilstanden bare til `true` under opprettelse av administratorbruker i Launchpad.

Følgende fem variabler 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 kontakter. Plassholderen '{{userProperty}}' i filteret erstattes med verdien av egenskapen angitt av `OVERLEAF_LDAP_CONTACTS_PROPERTY` fra LDAP-brukeren som initierer søket. Hvis ikke definert, hentes ingen brukere fra LDAP-serveren inn i kontakter.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_BASE`
  * Angir base-DN-en som søket etter kontakter skal starte fra. Standard er `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Søkeområdet kan være `base`, `én`, eller `sub` (standard).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * Angir egenskapen til 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 initieres av en ikke-LDAP-bruker. Hvis denne variabelen ikke er definert, vil det resulterende filteret ikke matche noe. Verdien `*` kan brukes som et jokertegn.

<details>

<summary><strong>Eksempel</strong></summary>

```
OVERLEAF_LDAP_CONTACTS_FILTER=(gidNumber={{userProperty}})
OVERLEAF_LDAP_CONTACTS_PROPERTY=gidNumber
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE=1000
```

Eksemplet ovenfor resulterer i at alle LDAP-brukere som har samme UNIX `gid`. Ikke-LDAP-brukere vil ha alle LDAP-brukere med UNIX `gid=1000` i kontaktene sine.

</details>

<details>

<summary><strong>Eksempel på variables.env-fil</strong></summary>

```
OVERLEAF_APP_NAME="Vår Overleaf-instans"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

# Aktiverer generering av miniatyrbilder ved hjelp av ImageMagick
ENABLE_CONVERSIONS=true

# Deaktiverer kravet om e-postbekreftelse
EMAIL_CONFIRMATION_DISABLED=true

## Nginx
# NGINX_WORKER_PROCESSES=4
# NGINX_WORKER_CONNECTIONS=768

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

OVERLEAF_SITE_URL=http://my-overleaf-instance.com
OVERLEAF_NAV_TITLE=Vår Overleaf-instans
# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.png
OVERLEAF_ADMIN_EMAIL=support@example.com

OVERLEAF_LEFT_FOOTER=[{"text": "Kontakt supportteamet ditt", "url": "mailto:support@example.com"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Hallo, jeg er på høyre side", "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=Dette systemet drives av avdeling 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='Brukernavn eller e-postadresse'

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='*'
```

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/on-premises-no/konfigurasjon/overleaf-toolkit/authentication/ldap-authentication.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
