> 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/sv/konfiguration/overleaf-toolkit/authentication/ldap-authentication.md).

# LDAP-autentisering

Denna funktion är utvecklad av [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Här erbjuder vi några dokument för din konfiguration.

{% hint style="warning" %}
Overleaf använder **passport-ldapauth** biblioteket, som är relativt föråldrat, kan LDAP-kompatibilitet inte garanteras fullt ut. Med vissa LDAP-identitetsleverantörer (till exempel, <https://goauthentik.io/>), kan inloggningsfel inträffa. Därför rekommenderas det, om möjligt, att använda OAuth/SAML-metoden i stället.
{% endhint %}

### Vad är LDAP

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

<figure><img src="/files/ba05e20209924580120907cacd8514776b3631c5" alt=""><figcaption><p>Ett Server Pro-exempel för LDAP</p></figcaption></figure>

### Konfiguration

Internt använder Overleaf LDAP [passport-ldapauth](https://github.com/vesse/passport-ldapauth) biblioteket. De flesta av dessa konfigurationsalternativ skickas vidare till `servern` config-objektet 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 den konfiguration den förväntar sig.

Miljövariabeln `EXTERNAL_AUTH` krävs för att aktivera LDAP-autentiseringsmodulen. Denna miljövariabel anger vilka externa autentiseringsmetoder som är aktiverade. Värdet på denna variabel ä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 på `http://your-overleaf.com/ldap/login`.

När LDAP-autentiseringsmetoder används anger en användare ett `användarnamn` och `lösenord` i inloggningsformuläret, försöks:

1. En LDAP-användare söks upp i LDAP-katalogen med hjälp av filtret som definieras av `OVERLEAF_LDAP_SEARCH_FILTER` och autentiseras.
2. Om autentiseringen lyckas kontrolleras Overleafs användardatabas efter en användare med den primära e-postadressen som matchar e-postadressen för den autentiserade LDAP-användaren:
   * Om en matchande användare hittas, `hashedPassword` fältet för denna användare raderas (om det finns). Detta säkerställer att användaren i framtiden endast kan logga in via LDAP-autentisering.
   * Om ingen matchande användare hittas skapas en ny Overleaf-användare med hjälp av e-postadressen, förnamnet och efternamnet som hämtats från LDAP-servern.

{% hint style="danger" %}
För användare som loggar in via LDAP lagrar vi inte (eller tar bort befintliga) hashade lösenord i Overleafs mongo-databas.
{% endhint %}

#### Miljövariabler

* `OVERLEAF_LDAP_URL` **(krävs)**
  * URL till LDAP-servern.
    * Exempel: `ldaps://ldap.example.com:636` (LDAP över SSL)
    * Exempel: `ldap://ldap.example.com:389` (okrypterat eller STARTTLS, om det är konfigurerat).
* `OVERLEAF_LDAP_IDENTITY_SERVICE_NAME`
  * Visningsnamn för LDAP-identitetstjänsten, används på inloggningssidan.
  * Standard till `Logga in med LDAP-leverantör`.
* `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 bara den första.
* `OVERLEAF_LDAP_FIRST_NAME_ATT`
  * Egenskapsnamnet som innehåller användarens förnamn och används i applikationen, vanligtvis `givenName`.
* `OVERLEAF_LDAP_LAST_NAME_ATT`
  * Egenskapsnamnet som innehåller användarens efternamn och används i applikationen, vanligtvis `sn`.
* `OVERLEAF_LDAP_NAME_ATT`
  * Egenskapsnamnet 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ållaren för inloggningsformuläret, standardvärde till `Användarnamn`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Om den sätts till `true`, uppdaterar LDAP-användarens `förnamn` och `efternamn` fält vid inloggning och stänger av formuläret för användaruppgifter på `/user/settings` sidan för LDAP-användare. Annars hämtas uppgifterna endast vid första inloggningen.
* `OVERLEAF_LDAP_BIND_DN`
  * Det fullständiga namnet (distinguished name) för LDAP-användaren som ska användas för LDAP-anslutningen (denna användare bör kunna söka/lista konton på LDAP-servern), t.ex. `cn=ldap_reader,dc=example,dc=com`. Om inte definierad används anonym bindning.
* `OVERLEAF_LDAP_BIND_CREDENTIALS`
  * Lösenord för `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * Egenskap för användaren att binda mot klienten, standardvärde till `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` **(krävs)**
  * Bas-DN där användare ska sökas. 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 den bokstavliga '{{username}}' för att interpolera det angivna användarnamnet i LDAP-sökningen.
    * Exempel: `(|(uid={{username}})(mail={{username}}))` (användaren kan logga in med e-post eller med inloggningsnamn).
    * Exempel: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Sökningens omfattning 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 `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 det 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 `true`, verifieras servercertifikatet mot listan över angivna CA:er.
* `OVERLEAF_LDAP_CACHE`
  * Om `true`, cachas upp till 100 uppgifter åt gången i 5 minuter.
* `OVERLEAF_LDAP_TIMEOUT`
  * Hur länge klienten ska låta operationer vara aktiva innan timeout inträffar, ms (Standard: Oändlig).
* `OVERLEAF_LDAP_CONNECT_TIMEOUT`
  * Hur länge klienten ska vänta innan TCP-anslutningar timear out, ms (Standard: OS-standard).
* `OVERLEAF_LDAP_IS_ADMIN_ATT` och `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`
  * När båda miljövariablerna är satta uppdaterar inloggningsprocessen `user.isAdmin = true` om LDAP-profilen innehåller attributet 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 `user.isAdmin` är satt till `false`. Om någon av dessa variabler inte är satt sätts administratörsstatusen endast till `true` under skapandet av administratörsanvändare 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 i LDAP-servern som ska laddas in i kontakter. Platshållaren '{{userProperty}}' i filtret ersätts med värdet för egenskapen som anges av `OVERLEAF_LDAP_CONTACTS_PROPERTY` från LDAP-användaren som initierar sökningen. Om inte definierad hämtas inga användare från LDAP-servern till kontakter.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_BASE`
  * Anger bas-DN varifrån sökningen efter kontakter ska startas. Standardvärde: `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Sökningens omfattning kan vara `base`, `one`, eller `sub` (standard).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * Anger egenskapen hos användarobjektet som kommer att ersätta 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 icke-LDAP-användare. Om denna variabel inte är definierad kommer det resulterande filtret att matcha ingenting. Värdet `*` kan användas som jokertecken.

<details>

<summary><strong>Exempel</strong></summary>

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

Exemplet ovan resulterar i att alla LDAP-användare som har samma UNIX `gid`. Icke-LDAP-användare kommer att ha alla LDAP-användare med UNIX `gid=1000` i sina kontakter.

</details>

<details>

<summary><strong>Exempel på filen variables.env</strong></summary>

```
OVERLEAF_APP_NAME="Our Overleaf Instance"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

# Aktiverar generering av miniatyrbilder med hjälp av ImageMagick
ENABLE_CONVERSIONS=true

# Inaktiverar kravet på e-postbekräftelse
EMAIL_CONFIRMATION_DISABLED=true

## Nginx
# NGINX_WORKER_PROCESSES=4
# NGINX_WORKER_CONNECTIONS=768

## Ställ in för 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": "Kontakta ditt supportteam", "url": "mailto:support@example.com"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Hej, jag är på höger sida", "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=Detta system drivs av avdelning x

OVERLEAF_PROXY_LEARN=true
NAV_HIDE_POWERED_BY=true

#################
## LDAP för 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='Användarnamn eller e-postadress'

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/sv/konfiguration/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.
