> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-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 relativt utdatert, kan LDAP-kompatibilitet ikke garanteres fullt ut. Med enkelte LDAP-identitetsleverandører (for eksempel, <https://goauthentik.io/>), kan innloggingsfeil forekomme. 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 webgrensesnittet, adskilt fra standard autentiseringsmetode. 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 `server` konfig-objektet som brukes til å konfigurere `passport-ldapauth`. Hvis du har problemer med å konfigurere LDAP, er det verdt å lese README-filen for `passport-ldapauth` for å få en følelse av konfigurasjonen den forventer.

Miljøvariabelen `EXTERNAL_AUTH` er påkrevd for å aktivere LDAP-autentiseringsmodulen. Denne miljøvariabelen spesifiserer hvilke eksterne autentiseringsmetoder som er aktivert. Verdien til denne variabelen er en liste. Hvis listen inkluderer `ldap` vil LDAP-autentisering bli 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 du bruker LDAP-autentiseringsmetoder, oppgir en bruker en `brukernavn` og `passord` i innloggingsskjemaet, forsøkes følgende:

1. Det søkes etter en LDAP-bruker i LDAP-katalogen ved hjelp av filteret definert av `OVERLEAF_LDAP_SEARCH_FILTER` og autentisert.
2. Hvis autentiseringen lykkes, sjekkes Overleafs brukerdatabase 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 ved å bruke e-posten, 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-adressen 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 `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`
  * Egenskapsnavnet som inneholder brukerens fornavn og som brukes i applikasjonen, vanligvis `givenName`.
* `OVERLEAF_LDAP_LAST_NAME_ATT`
  * Egenskapsnavnet som inneholder brukerens etternavn og som brukes i applikasjonen, vanligvis `sn`.
* `OVERLEAF_LDAP_NAME_ATT`
  * Egenskapsnavnet 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 innloggingsskjemaet, standard er `Brukernavn`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Hvis satt til `true`, oppdaterer LDAP-brukerens `first_name` og `last_name` felt ved innlogging, og slår av skjemaet for brukeropplysninger 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 skal kunne søke i/liste 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`
  * Egenskapen til brukeren som skal bindes mot klienten, standard er `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` **(påkrevd)**
  * Base-DN-en som brukere skal søkes fra. F.eks., `ou=people,dc=example,dc=com`.
* `OVERLEAF_LDAP_SEARCH_FILTER`
  * LDAP-søkefilter som brukes til å finne en bruker. Bruk den bokstavelige teksten '{{username}}' for å få det angitte brukernavnet interpolert 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økets omfang 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 finnes flere sertifikater, kan det være en JSON-array 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`, vil opptil 100 legitimasjoner om gangen bli bufret i 5 minutter.
* `OVERLEAF_LDAP_TIMEOUT`
  * Hvor lenge klienten skal la operasjoner være aktive før de time-out-er, ms (Standard: Uendelig).
* `OVERLEAF_LDAP_CONNECT_TIMEOUT`
  * Hvor lenge klienten skal vente før det oppstår timeout på TCP-tilkoblinger, 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 som er spesifisert 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` er satt til `false`. Hvis en av disse variablene ikke er satt, settes administratorstatusen bare til `true` under opprettelse av adminbruker i Launchpad.

Følgende fem variabler brukes til å konfigurere hvordan brukerens kontakter hentes fra LDAP-serveren.

* `OVERLEAF_LDAP_CONTACTS_FILTER`
  * Filteret som brukes til å søke etter brukere i LDAP-serveren som skal lastes inn i kontakter. Plassholderen '{{userProperty}}' i filteret erstattes med verdien av egenskapen spesifisert 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`
  * Spesifiserer base-DN-en som søket etter kontakter skal starte fra. Standard er `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Søkets omfang kan være `base`, `én`, eller `sub` (standard).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * Spesifiserer egenskapen til brukerobjektet som vil erstatte plassholderen '{{userProperty}}' i `OVERLEAF_LDAP_CONTACTS_FILTER`.
* `OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE`
  * Spesifiserer 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
```

Eksempelet 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 med 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=Our Overleaf Instance
# 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://ayakaleaf-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.
