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

# LDAP-todennus

Tämän ominaisuuden on kehittänyt [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Täältä löydät joitakin dokumentteja asetustasi varten.

{% hint style="warning" %}
Overleaf käyttää **passport-ldapauth** kirjastoa, joka on suhteellisen vanhentunut, LDAP-yhteensopivuutta ei voida taata täysin. Joidenkin LDAP-tunnistautumispalvelujen kanssa (esimerkiksi, <https://goauthentik.io/>), kirjautumisessa voi esiintyä epäonnistumisia. Siksi on suositeltavaa käyttää OAuth/SAML-menetelmää, jos mahdollista.
{% endhint %}

### Mikä on LDAP

LDAP on todennukseen käytettävä protokolla ulkoista identiteetin varmistusta varten. Overleaf Server Pro tarjoaa erillisen LDAP-kirjautumislomakkeen verkkokäyttöliittymässä, erillään tavallisesta todennusmenetelmästä. Kun käyttäjä lähettää LDAP-käyttäjätunnuksensa ja salasanansa, Overleafin taustajärjestelmä varmistaa tunnistetiedot määritettyä LDAP-palvelinta vasten, esimerkiksi `ldap://ldap:10389`.

<figure><img src="/files/efc8281bd0cfbb077bc161dde7df9d8e1602d4ad" alt=""><figcaption><p>Server Pro -esimerkki LDAP:lle</p></figcaption></figure>

### Asetukset

Sisäisesti Overleaf LDAP käyttää [passport-ldapauth](https://github.com/vesse/passport-ldapauth) kirjastoa. Suurin osa näistä asetuksista välitetään `palvelin` config-objektiin, jota käytetään määrittämään `passport-ldapauth`. Jos LDAP:n määrittämisessä on ongelmia, kannattaa lukea README tiedostolle `passport-ldapauth` saadaksesi käsityksen siitä, millaista määritystä se odottaa.

Ympäristömuuttuja `EXTERNAL_AUTH` vaaditaan LDAP-todennusmoduulin käyttöönottoon. Tämä ympäristömuuttuja määrittää, mitkä ulkoiset todennusmenetelmät aktivoidaan. Tämän muuttujan arvo on lista. Jos lista sisältää `ldap` niin LDAP-todennus otetaan käyttöön.

Esimerkiksi: `EXTERNAL_AUTH=ldap saml`

Toisin kuin Overleaf CEP:ssä, ayaka-notes-versiossamme rajoitamme LDAP-todennuksen pelkäksi todennusmenetelmäksi, joka on käytettävissä osoitteessa `http://your-overleaf.com/ldap/login`.

LDAP-todennusmenetelmiä käytettäessä käyttäjä syöttää `käyttäjätunnuksen` ja `salasanan` kirjautumislomakkeessa, suoritetaan:

1. LDAP-käyttäjää etsitään LDAP-hakemistosta käyttäen suodinta, jonka määrittää `OVERLEAF_LDAP_SEARCH_FILTER` ja todennetaan.
2. Jos todennus onnistuu, Overleafin käyttäjätietokannasta tarkistetaan käyttäjä, jonka ensisijainen sähköpostiosoite vastaa todennetun LDAP-käyttäjän sähköpostiosoitetta:
   * Jos vastaava käyttäjä löytyy, `hashedPassword` kenttä tältä käyttäjältä poistetaan (jos se on olemassa). Tämä varmistaa, että käyttäjä voi kirjautua jatkossa vain LDAP-todennuksen kautta.
   * Jos vastaavaa käyttäjää ei löydy, luodaan uusi Overleaf-käyttäjä LDAP-palvelimelta haetun sähköpostiosoitteen, etunimen ja sukunimen perusteella.

{% hint style="danger" %}
LDAP:n kautta kirjautuville käyttäjille emme tallenna (tai poista olemassa olevia) tiivistettyjä salasanoja Overleafin Mongo-tietokantaan.
{% endhint %}

#### Ympäristömuuttujat

* `OVERLEAF_LDAP_URL` **(pakollinen)**
  * LDAP-palvelimen URL-osoite.
    * Esimerkki: `ldaps://ldap.example.com:636` (LDAP SSL:n yli)
    * Esimerkki: `ldap://ldap.example.com:389` (salaamaton tai STARTTLS, jos määritetty).
* `OVERLEAF_LDAP_IDENTITY_SERVICE_NAME`
  * LDAP-tunnistuspalvelun näyttönimi, jota käytetään kirjautumissivulla.
  * Oletuksena `Kirjaudu LDAP-palveluntarjoajalla`.
* `OVERLEAF_LDAP_EMAIL_ATT`
  * LDAP-palvelimen palauttama sähköposti-attribuutti, oletuksena `mail`. Jokaisella LDAP-käyttäjällä täytyy olla vähintään yksi sähköpostiosoite. Jos osoitteita on useita, vain ensimmäistä käytetään.
* `OVERLEAF_LDAP_FIRST_NAME_ATT`
  * Ominaisuuden nimi, joka sisältää sovelluksessa käytettävän käyttäjän etunimen, yleensä `givenName`.
* `OVERLEAF_LDAP_LAST_NAME_ATT`
  * Ominaisuuden nimi, joka sisältää sovelluksessa käytettävän käyttäjän sukunimen, yleensä `sn`.
* `OVERLEAF_LDAP_NAME_ATT`
  * Ominaisuuden nimi, joka sisältää käyttäjän koko nimen, yleensä `cn`. Jos kumpaakaan kahdesta edellisestä muuttujasta ei ole määritetty, käyttäjän etu- ja/tai sukunimi poimitaan tästä muuttujasta. Muussa tapauksessa sitä ei käytetä.
* `OVERLEAF_LDAP_PLACEHOLDER`
  * Kirjautumislomakkeen paikkamerkki, oletuksena `Käyttäjätunnus`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Jos asetetaan arvoksi `true`, päivittää LDAP-käyttäjän `first_name` ja `last_name` kentän kirjautumisen yhteydessä, ja ottaa pois käytöstä käyttäjätietolomakkeen `/user/settings` sivulla LDAP-käyttäjiltä. Muussa tapauksessa tiedot haetaan vain ensimmäisellä kirjautumiskerralla.
* `OVERLEAF_LDAP_BIND_DN`
  * LDAP-käyttäjän erotettu nimi, jota tulisi käyttää LDAP-yhteyteen (tämän käyttäjän pitäisi pystyä etsimään/listaamaan tilejä LDAP-palvelimelta), esim. `cn=ldap_reader,dc=example,dc=com`. Jos sitä ei ole määritetty, käytetään anonyymiä sidontaa.
* `OVERLEAF_LDAP_BIND_CREDENTIALS`
  * Salasana kohteelle `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * Käyttäjän ominaisuus, jota vasten asiakas sidotaan, oletuksena `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` **(pakollinen)**
  * Perus-DN, josta käyttäjiä etsitään. Esim. `ou=people,dc=example,dc=com`.
* `OVERLEAF_LDAP_SEARCH_FILTER`
  * LDAP-hakusuodin, jolla käyttäjä löydetään. Käytä literaalia '{{username}}', jotta annettu käyttäjätunnus sijoitetaan LDAP-hakuun.
    * Esimerkki: `(|(uid={{username}})(mail={{username}}))` (käyttäjä voi kirjautua sähköpostilla tai kirjautumistunnuksella).
    * Esimerkki: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Haun laajuus voi olla `base`, `yksi taso`, tai `sub` (oletus).
* `OVERLEAF_LDAP_SEARCH_ATTRIBUTES`
  * JSON-taulukko LDAP-palvelimelta haettavista attribuuteista, esim. `["uid", "mail", "givenName", "sn"]`. Oletuksena kaikki attribuutit haetaan.
* `OVERLEAF_LDAP_STARTTLS`
  * Jos `true`, käytetään LDAP:ia TLS:n yli.
* `OVERLEAF_LDAP_TLS_OPTS_CA_PATH`
  * Polku tiedostoon, joka sisältää CA-varmenteen, jota käytetään LDAP-palvelimen SSL/TLS-varmenteen vahvistamiseen. Jos varmenteita on useita, se voi olla JSON-taulukko varmenteiden poluista. Tiedostojen on oltava Docker-kontin käytettävissä.
    * Esimerkki (yksi varmenne): `/var/lib/overleaf/certs/ldap_ca_cert.pem`
    * Esimerkki (useita varmenteita): `["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]`
* `OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH`
  * Jos `true`, palvelimen varmenne vahvistetaan toimitettujen CA-varmenteiden luetteloa vasten.
* `OVERLEAF_LDAP_CACHE`
  * Jos `true`, silloin enintään 100 tunnistetietoa kerrallaan välimuistitetaan 5 minuutiksi.
* `OVERLEAF_LDAP_TIMEOUT`
  * Kuinka kauan asiakkaan tulisi sallia toimintojen olla käynnissä ennen aikakatkaisua, ms (oletus: Infinity).
* `OVERLEAF_LDAP_CONNECT_TIMEOUT`
  * Kuinka kauan asiakkaan tulisi odottaa ennen TCP-yhteyksien aikakatkaisua, ms (oletus: käyttöjärjestelmän oletus).
* `OVERLEAF_LDAP_IS_ADMIN_ATT` ja `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`
  * Kun molemmat ympäristömuuttujat on asetettu, kirjautumisprosessi päivittää `user.isAdmin = true` jos LDAP-profiili sisältää attribuutin, jonka määrittää `OVERLEAF_LDAP_IS_ADMIN_ATT` ja sen arvo joko vastaa `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE` tai on taulukko, joka sisältää `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`, muuten `user.isAdmin` on asetettu arvoon `false`. Jos kumpaakaan näistä muuttujista ei ole asetettu, ylläpitäjätila asetetaan vain arvoon `true` ylläpitäjäkäyttäjän luomisen aikana Launchpadissa.

Seuraavia viittä muuttujaa käytetään määrittämään, miten käyttäjän yhteystiedot haetaan LDAP-palvelimelta.

* `OVERLEAF_LDAP_CONTACTS_FILTER`
  * Suodatin, jota käytetään LDAP-palvelimella haettavien käyttäjien lataamiseen yhteystietoihin. Suotimen sisällä oleva paikkamerkki '{{userProperty}}' korvataan arvolla, joka on määritetty `OVERLEAF_LDAP_CONTACTS_PROPERTY` LDAP-käyttäjältä, joka aloittaa haun. Jos sitä ei ole määritetty, LDAP-palvelimelta ei haeta käyttäjiä yhteystietoihin.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_BASE`
  * Määrittää perus-DN:n, josta yhteystietojen haku aloitetaan. Oletuksena `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Haun laajuus voi olla `base`, `yksi taso`, tai `sub` (oletus).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * Määrittää käyttäjäobjektin ominaisuuden, joka korvaa '{{userProperty}}'-paikkamerkin `OVERLEAF_LDAP_CONTACTS_FILTER`.
* `OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE`
  * Määrittää arvon `OVERLEAF_LDAP_CONTACTS_PROPERTY` jos haku on muun kuin LDAP-käyttäjän käynnistämä. Jos tätä muuttujaa ei ole määritetty, tuloksena oleva suodatin ei täsmää mihinkään. Arvo `*` voidaan käyttää jokerimerkkinä.

<details>

<summary><strong>Esimerkki</strong></summary>

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

Yllä oleva esimerkki lataa nykyisen LDAP-käyttäjän yhteystietoihin kaikki LDAP-käyttäjät, joilla on sama UNIX `gid`. Muilla kuin LDAP-käyttäjillä on kaikki LDAP-käyttäjät, joilla on UNIX `gid=1000` yhteystiedoissaan.

</details>

<details>

<summary><strong>Esimerkkitiedosto variables.env</strong></summary>

```
OVERLEAF_APP_NAME="Our Overleaf Instance"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

# Ottaa pikkukuvien luonnin käyttöön ImageMagickillä
ENABLE_CONVERSIONS=true

# Poistaa sähköpostivahvistuksen vaatimuksen käytöstä
EMAIL_CONFIRMATION_DISABLED=true

## Nginx
# NGINX_WORKER_PROCESSES=4
# NGINX_WORKER_CONNECTIONS=768

## Aseta TLS:ää varten nginx-proxyn kautta
# OVERLEAF_BEHIND_PROXY=true
# OVERLEAF_SECURE_COOKIE=true

OVERLEAF_SITE_URL=http://my-overleaf-instance.com
OVERLEAF_NAV_TITLE=Meidän Overleaf-instanssimme
# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.png
OVERLEAF_ADMIN_EMAIL=support@example.com

OVERLEAF_LEFT_FOOTER=[{"text": "Ota yhteyttä tukitiimiisi", "url": "mailto:support@example.com"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Hei, olen oikealla", "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=Tätä järjestelmää ylläpitää osasto x

OVERLEAF_PROXY_LEARN=true
NAV_HIDE_POWERED_BY=true

#################
## LDAP CE-versiolle ##
#################

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

</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/fi/konfiguraatio/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.
