> 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/fi/maaritys/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ässä tarjoamme joitakin asiakirjoja konfiguraatiotasi varten.

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

### Mikä on LDAP

LDAP on todennusprotokolla, jota käytetään ulkoiseen identiteetin varmistamiseen. Overleaf Server Pro tarjoaa verkkokäyttöliittymässä erillisen LDAP-kirjautumislomakkeen, joka on erillinen 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:sta</p></figcaption></figure>

### Määritys

Sisäisesti Overleaf LDAP käyttää [passport-ldapauth](https://github.com/vesse/passport-ldapauth) kirjastoa. Suurin osa näistä määritysvaihtoehdoista välitetään `palvelin` config-objektiin, jota käytetään määrittämään `passport-ldapauth`. Jos LDAPin määrittämisessä on ongelmia, kannattaa lukea `passport-ldapauth` README, jotta saat käsityksen siitä, mitä 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` silloin LDAP-todennus aktivoidaan.

Esimerkiksi: `EXTERNAL_AUTH=ldap saml`

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

Kun käytetään LDAP-todennusmenetelmiä, käyttäjä syöttää `käyttäjätunnuksen` ja `salasanan` kirjautumislomakkeeseen, ja järjestelmä yrittää:

1. LDAP-käyttäjää etsitään LDAP-hakemistosta suodattimella, joka on määritetty `OVERLEAF_LDAP_SEARCH_FILTER` ja todennetaan.
2. Jos todennus onnistuu, Overleafin käyttäjätietokannasta etsitään 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 tulevaisuudessa kirjautua vain LDAP-todennuksen kautta.
   * Jos vastaavaa käyttäjää ei löydy, uusi Overleaf-käyttäjä luodaan käyttämällä LDAP-palvelimelta haettua sähköpostiosoitetta, etunimeä ja sukunimeä.

{% hint style="danger" %}
LDAPin kautta kirjautuvilta käyttäjiltä emme tallenna (tai poistamme olemassa olevat) hajautettuja salasanoja Overleafin mongo-tietokantaan.
{% endhint %}

#### Ympäristömuuttujat

* `OVERLEAF_LDAP_URL` **(vaaditaan)**
  * 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-identiteettipalvelun näyttönimi, käytetään kirjautumissivulla.
  * Oletuksena `Kirjaudu sisään LDAP-palveluntarjoajalla`.
* `OVERLEAF_LDAP_EMAIL_ATT`
  * LDAP-palvelimen palauttama sähköpostiominaisuus, oletus `mail`. Jokaisella LDAP-käyttäjällä on oltava vähintään yksi sähköpostiosoite. Jos osoitteita on useita, vain ensimmäistä käytetään.
* `OVERLEAF_LDAP_FIRST_NAME_ATT`
  * Sarakkeen nimi, joka sisältää sovelluksessa käytettävän käyttäjän etunimen, yleensä `givenName`.
* `OVERLEAF_LDAP_LAST_NAME_ATT`
  * Sarakkeen nimi, joka sisältää sovelluksessa käytettävän käyttäjän sukunimen, yleensä `sn`.
* `OVERLEAF_LDAP_NAME_ATT`
  * Sarakkeen nimi, joka sisältää käyttäjän koko nimen, yleensä `cn`. Jos kumpaakaan kahdesta aiemmasta 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 arvoksi asetetaan `true`, päivittää LDAP-käyttäjän `etunimi` ja `sukunimi` kentän kirjautumisen yhteydessä ja kytkee käyttäjätietolomakkeen pois `/user/settings` sivulta LDAP-käyttäjille. Muussa tapauksessa tiedot haetaan vain ensimmäisellä kirjautumiskerralla.
* `OVERLEAF_LDAP_BIND_DN`
  * LDAP-käyttäjän erottuva nimi, jota tulee käyttää LDAP-yhteydessä (tämän käyttäjän pitäisi pystyä hakemaan/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 `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * Käyttäjän ominaisuus, johon asiakasta sidotaan, oletuksena `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` **(vaaditaan)**
  * Perus-DN, josta käyttäjiä etsitään. Esim. `ou=people,dc=example,dc=com`.
* `OVERLEAF_LDAP_SEARCH_FILTER`
  * LDAP-hakusuodatin, jolla käyttäjä löydetään. Käytä literaalia '{{username}}', jotta annettu käyttäjätunnus interpoloidaan 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`, `one`, tai `sub` (oletus).
* `OVERLEAF_LDAP_SEARCH_ATTRIBUTES`
  * LDAP-palvelimelta haettavien määritteiden JSON-taulukko, esim. `["uid", "mail", "givenName", "sn"]`. Oletuksena kaikki määritteet haetaan.
* `OVERLEAF_LDAP_STARTTLS`
  * Jos `true`, LDAP:ta käytetään 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 poluista varmenteisiin. 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 varmistetaan toimitettujen CA-varmentajien listaa vasten.
* `OVERLEAF_LDAP_CACHE`
  * Jos `true`, silloin enintään 100 tunnistetietoa kerrallaan välimuistitetaan 5 minuutiksi.
* `OVERLEAF_LDAP_TIMEOUT`
  * Kuinka kauan asiakkaan tulisi antaa toimintojen olla käynnissä ennen aikakatkaisua, ms (oletus: ääretön).
* `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ää ominaisuuden, jonka on määrittänyt `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 jompikumpi näistä muuttujista ei ole asetettu, järjestelmänvalvojan tila asetetaan vain `true` Launchpadissa tapahtuvan ylläpitäjäkäyttäjän luonnin aikana.

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 etsittäessä käyttäjiä, jotka ladataan yhteystietoihin. Suodattimen '{{userProperty}}'-paikkamerkki korvataan ominaisuuden arvolla, jonka määrittää `OVERLEAF_LDAP_CONTACTS_PROPERTY` LDAP-käyttäjästä, joka käynnistää haun. Jos sitä ei ole määritetty, käyttäjiä ei haeta LDAP-palvelimelta 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`, `one`, 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ää `OVERLEAF_LDAP_CONTACTS_PROPERTY` arvon, `*` jos haku on ei-LDAP-käyttäjän käynnistämä. Jos tätä muuttujaa ei ole määritetty, tuloksena oleva suodatin ei täsmää mihinkään. Arvoa

<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`. Ei-LDAP-käyttäjien yhteystietoihin tulevat kaikki LDAP-käyttäjät, joilla on UNIX `gid=1000` yhteystiedoissaan.

</details>

<details>

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

```
OVERLEAF_APP_NAME="Meidän Overleaf-instanssimme"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

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

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

## Nginx
# NGINX_WORKER_PROCESSES=4
# NGINX_WORKER_CONNECTIONS=768

## Aseta TLS käyttöön nginx-proxyn kautta
# OVERLEAF_BEHIND_PROXY=true
# OVERLEAF_SECURE_COOKIE=true

OVERLEAF_SITE_URL=http://my-overleaf-instance.com
OVERLEAF_NAV_TITLE=Oma 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:tä varten ##
#################

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='Käyttäjätunnus tai sähköpostiosoite'

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