> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# LDAP-todennus

<Info>
  Tämän ominaisuuden on kehittänyt [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Tarjoamme tässä dokumentaatiota konfigurointiasi varten.
</Info>

<Warning>
  Overleaf käyttää **passport-ldapauth**-kirjastoa, joka on melko vanhentunut, joten LDAP-yhteensopivuutta ei voida täysin taata. Tiettyjen LDAP-identiteetintarjoajien kanssa (esimerkiksi [https://goauthentik.io/](https://goauthentik.io/)) kirjautuminen voi epäonnistua. Siksi on suositeltavaa käyttää ensisijaisesti OAuth/SAML-menetelmää, jos mahdollista. Jos käytät goauthentikia, noudata alla olevaa testattua ohjetta [Vaihe vaiheelta: goauthentik](/fi/on-premises/configuration/overleaf-toolkit/authentication/ldap-authentication#vaihe-vaiheelta-goauthentik).
</Warning>

### Mikä on LDAP

LDAP on todennusprotokolla, jota käytetään ulkoiseen identiteetin varmentamiseen. Overleaf Server Pro tarjoaa verkkokäyttöliittymässä erillisen LDAP-kirjautumislomakkeen, joka on erillään tavallisesta todennusmenetelmästä. Kun käyttäjä lähettää LDAP-käyttäjänimensä ja salasanansa, Overleafin taustajärjestelmä tarkistaa tunnistetiedot määritettyä LDAP-palvelinta vasten, esimerkiksi `ldap://ldap:10389`.

<Frame caption="Server Pro -esimerkki LDAP:sta">
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/on-premises/image-29.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=f3ebcacecec45115cf9b1fa55eb1ba94" alt="" width="2804" height="2005" data-path="images/on-premises/image-29.png" />
</Frame>

### Konfiguraatio

Sisäisesti Overleafin LDAP käyttää [passport-ldapauth](https://github.com/vesse/passport-ldapauth)-kirjastoa. Useimmat näistä konfiguraatioasetuksista välitetään `server`-konfiguraatio-objektille, jolla `passport-ldapauth` määritetään. Jos LDAP:n määrittämisessä on ongelmia, kannattaa lukea `passport-ldapauth`-kirjaston README saadakseen käsityksen sen odottamasta konfiguraatiosta.

Ympäristömuuttuja `EXTERNAL_AUTH` vaaditaan LDAP-todennusmoduulin käyttöön ottamiseksi. Tämä ympäristömuuttuja määrittää, mitkä ulkoiset todennusmenetelmät aktivoidaan. Muuttujan arvo on luettelo. Jos luettelo sisältää arvon `ldap`, LDAP-todennus aktivoidaan.

Esimerkiksi: `EXTERNAL_AUTH=ldap saml`

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

Kun LDAP-todennusmenetelmiä käytetään ja käyttäjä syöttää kirjautumislomakkeeseen `username`- ja `password`-arvot, järjestelmä toimii seuraavasti:

1. LDAP-käyttäjää haetaan LDAP-hakemistosta muuttujan `OVERLEAF_LDAP_SEARCH_FILTER` määrittämällä suodattimella, ja käyttäjä 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, tämän käyttäjän `hashedPassword`-kenttä poistetaan (jos se on olemassa). Tämä varmistaa, että käyttäjä voi jatkossa kirjautua 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.

<Danger>
  LDAP:n kautta kirjautuvien käyttäjien salasanatiivisteitä emme tallenna Overleafin mongo-tietokantaan (ja olemassa olevat poistetaan).
</Danger>

#### Ympäristömuuttujat

* `OVERLEAF_LDAP_URL` <strong>(pakollinen)</strong>
  * 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, jota käytetään kirjautumissivulla.
  * Oletus on `Log in with LDAP Provider`.
* `OVERLEAF_LDAP_EMAIL_ATT`
  * LDAP-palvelimen palauttama sähköpostiattribuutti, oletuksena `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`
  * 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 jompaakumpaa 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 paikkamerkkiteksti, oletuksena `Username`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Jos arvo on `true`, LDAP-käyttäjän `first_name`- ja `last_name`-kentät päivitetään kirjautumisen yhteydessä, ja `/user/settings`-sivun käyttäjätietolomake poistetaan käytöstä LDAP-käyttäjiltä. Muussa tapauksessa tiedot haetaan vain ensimmäisellä kirjautumiskerralla.
* `OVERLEAF_LDAP_BIND_DN`
  * Sen LDAP-käyttäjän erottava nimi (DN), jota käytetään LDAP-yhteyteen (tämän käyttäjän on voitava hakea/listata tilejä LDAP-palvelimella), esim. `cn=ldap_reader,dc=example,dc=com`. Jos sitä ei ole määritetty, käytetään anonyymiä sidontaa.
* `OVERLEAF_LDAP_BIND_CREDENTIALS`
  * Salasana käyttäjälle `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * Käyttäjän ominaisuus, jota vasten sidonta asiakkaaseen tehdään, oletuksena `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` <strong>(pakollinen)</strong>
  * Perus-DN, josta käyttäjiä haetaan. Esim. `ou=people,dc=example,dc=com`.
* `OVERLEAF_LDAP_SEARCH_FILTER`
  * LDAP-hakusuodatin, jolla käyttäjä etsitään. Käytä literaalia '\{\{username}}', jotta annettu käyttäjänimi sijoitetaan LDAP-hakuun.
    * Esimerkki: `(|(uid={{username}})(mail={{username}}))` (käyttäjä voi kirjautua sähköpostiosoitteella tai käyttäjätunnuksella).
    * Esimerkki: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Haun laajuus voi olla `base`, `one` 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 arvo on `true`, käytetään LDAP:tä TLS:n yli.
* `OVERLEAF_LDAP_TLS_OPTS_CA_PATH`
  * Polku tiedostoon, joka sisältää LDAP-palvelimen SSL/TLS-varmenteen tarkistamiseen käytettävän CA-varmenteen. Jos varmenteita on useita, arvo 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 arvo on `true`, palvelimen varmenne tarkistetaan annettujen CA-varmenteiden luetteloa vasten.
* `OVERLEAF_LDAP_CACHE`
  * Jos arvo on `true`, enintään 100 tunnistetietoa kerrallaan tallennetaan välimuistiin 5 minuutiksi.
* `OVERLEAF_LDAP_TIMEOUT`
  * Kuinka kauan asiakas antaa operaatioiden kestää ennen aikakatkaisua, ms (oletus: Infinity).
* `OVERLEAF_LDAP_CONNECT_TIMEOUT`
  * Kuinka kauan asiakas 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 asettaa `user.isAdmin = true`, jos LDAP-profiili sisältää muuttujan `OVERLEAF_LDAP_IS_ADMIN_ATT` määrittämän attribuutin ja sen arvo joko vastaa arvoa `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE` tai on taulukko, joka sisältää arvon `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`; muussa tapauksessa `user.isAdmin` asetetaan arvoon `false`. Jos jompaakumpaa näistä muuttujista ei ole asetettu, ylläpitäjän tila asetetaan arvoon `true` vain ylläpitäjäkäyttäjän luomisen yhteydessä Launchpadissa.

Seuraavilla viidellä muuttujalla määritetään, miten käyttäjien yhteystiedot haetaan LDAP-palvelimelta.

* `OVERLEAF_LDAP_CONTACTS_FILTER`
  * Suodatin, jolla LDAP-palvelimelta haetaan käyttäjiä ladattavaksi yhteystietoihin. Suodattimen sisällä oleva paikkamerkki '\{\{userProperty}}' korvataan haun aloittavan LDAP-käyttäjän sen ominaisuuden arvolla, jonka `OVERLEAF_LDAP_CONTACTS_PROPERTY` määrittää. Jos tätä 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`, `one` tai `sub` (oletus).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * Määrittää käyttäjäobjektin ominaisuuden, joka korvaa paikkamerkin '\{\{userProperty}}' muuttujassa `OVERLEAF_LDAP_CONTACTS_FILTER`.
* `OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE`
  * Määrittää muuttujan `OVERLEAF_LDAP_CONTACTS_PROPERTY` arvon, jos haun aloittaa muu kuin LDAP-käyttäjä. Jos tätä muuttujaa ei ole määritetty, tuloksena oleva suodatin ei vastaa mitään. Arvoa `*` voidaan käyttää jokerimerkkinä.

<Accordion title="Esimerkki">
  ```text theme={null}
  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`. Muiden kuin LDAP-käyttäjien yhteystiedoissa ovat kaikki LDAP-käyttäjät, joilla on UNIX-`gid=1000`.
</Accordion>

<Accordion title="Esimerkki variables.env-tiedostosta">
  ```text theme={null}
  OVERLEAF_APP_NAME="Our Overleaf Instance"

  ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

  # Enables Thumbnail generation using ImageMagick
  ENABLE_CONVERSIONS=true

  # Disables email confirmation requirement
  EMAIL_CONFIRMATION_DISABLED=true

  ## Nginx
  # NGINX_WORKER_PROCESSES=4
  # NGINX_WORKER_CONNECTIONS=768

  ## Set 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": "Contact your support team", "url": "mailto:support@example.com"}]
  OVERLEAF_RIGHT_FOOTER=[{"text":"Hello, I am on the Right", "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=This system is run by department 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='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='*'
  ```
</Accordion>

## Vaihe vaiheelta: goauthentik

Tämä ohje käy läpi määrityksen, joka on testattu [goauthentikin](https://goauthentik.io/) kanssa. Esimerkeissä käytetään Base DN:ää `dc=example,dc=com`; korvaa se omallasi.

<Steps>
  <Step title="Luo sidontatili (bind)">
    Overleaf kirjautuu ensin hakemistoon omalla tilillään löytääkseen käyttäjän. Avaa Authentikissa **Directory > Users**, napsauta **New User**, valitse **Internal User** ja napsauta **Next**. Anna käyttäjänimi, esimerkiksi `ldapservice`, ja napsauta **Create**:

    <Frame caption="Authentik: sidontatilin luominen">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-user-create.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=bf5d9a5aefd048781339157121a9e203" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-user-create.png" />
    </Frame>

    Avaa uusi käyttäjä ja napsauta **Set password**. Tämä salasana asetetaan muuttujaan `OVERLEAF_LDAP_BIND_CREDENTIALS`:

    <div style={{ textAlign: "center" }}>
      <Frame caption="Authentik: sidontatilin salasanan asettaminen (testi-instanssi)">
        <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-user-page.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=96aad0f919dc8e74fef5995b1dde1e78" alt="" width="207" data-path="images/on-premises/ldap-authentik-user-page.png" />
      </Frame>
    </div>

    Kirjoita muistiin käyttäjän numero osoiteriviltä, esimerkiksi `19` osoitteessa `…/#/identity/users/19`. Tarvitset sitä vaiheessa 3.
  </Step>

  <Step title="Luo tarjoaja ja sovellus">
    Avaa **Applications > Applications** ja napsauta **New Application**. Ohjattu toiminto luo sovelluksen ja sen tarjoajan samalla kertaa.

    1\. Anna sovellukselle nimi ja slug, esimerkiksi `overleaf-ldap`, ja napsauta **Next**:

    <Frame caption="Authentik: sovelluksen nimi ja slug">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-app.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=0d3e6b54e9bf552bd81d8b1d6b722701" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-app.png" />
    </Frame>

    2\. Valitse **LDAP Provider** ja napsauta **Next**:

    <Frame caption="Authentik: LDAP-tarjoajan valitseminen">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-type.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=ee63f2682051572a08c1f5bc321a1af6" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-type.png" />
    </Frame>

    3\. Aseta **Bind Mode** arvoon **Direct binding** ja **Search Mode** arvoon **Direct querying**:

    <Frame caption="Authentik: LDAP-tarjoajan sidonta- ja hakutila">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-modes.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=ea147f1605e76142021d07f775d5ef53" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-modes.png" />
    </Frame>

    4\. Aseta alempana **Bind Flow** arvoon `default-authentication-flow` ja **Base DN** omaan Base DN:ääsi, esimerkiksi `dc=example,dc=com`:

    <Frame caption="Authentik: LDAP-tarjoajan sidontavuo ja Base DN">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-basedn.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=4ce418571d83294ee749d56b13c63d44" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-basedn.png" />
    </Frame>

    5\. Napsauta **Next**, kunnes olet viimeisellä sivulla, ja tallenna sovellus.
  </Step>

  <Step title="Anna sidontatilin hakea hakemistosta">
    Ilman tätä oikeutta sidontatili näkee vain itsensä, haku ei löydä yhtään käyttäjää ja jokainen LDAP-kirjautuminen epäonnistuu.

    Avaa tarjoaja, siirry kohtaan **Permissions** ja napsauta **Assign Role Object Permission**. Kirjoita kenttään **Role** vaiheen 1 numero ja valitse `ak-managed-role--user-<number>`, ja ota sitten käyttöön **Search full LDAP directory**:

    <Frame caption="Authentik: hakuoikeuden antaminen sidontatilille (testi-instanssi)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-assign.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=5af53c691ae845adcb4ede42c24fb600" alt="" width="1120" height="529" data-path="images/on-premises/ldap-authentik-assign.png" />
    </Frame>

    Tämän jälkeen roolin kohdalla näkyy valintamerkki sarakkeessa **Search full LDAP directory**:

    <Frame caption="Authentik: LDAP-tarjoajan oikeudet (testi-instanssi)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-permissions.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=24ae7f0dfb6d19e1b3d6584d6ccf0f0b" alt="" width="990" height="488" data-path="images/on-premises/ldap-authentik-permissions.png" />
    </Frame>
  </Step>

  <Step title="Käynnistä LDAP-outpost">
    Authentik vastaa LDAP-pyyntöihin outpostin eli erillisen kontin kautta. Avaa **Applications > Outposts**, luo **LDAP**-tyyppinen outpost tarjoajallesi ja ota se käyttöön Authentikin ohjeiden mukaisesti. Se kuuntelee porttia 389 isännässä, jossa se toimii. Kun yhteys on muodostettu, siinä näkyy vihreä valintamerkki:

    <Frame caption="Authentik: käynnissä oleva LDAP-outpost (testi-instanssi)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-outposts.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=cd8af2f7df7b2df24d2369416509faef" alt="" width="990" height="468" data-path="images/on-premises/ldap-authentik-outposts.png" />
    </Frame>

    ```dotenv theme={null}
    OVERLEAF_LDAP_URL=ldap://ldap.example.com:389
    ```
  </Step>

  <Step title="Täytä DN:t">
    Tarjoajan sivulla näkyvät Base DN ja esimerkki kohdassa **How to connect**:

    <Frame caption="Authentik: LDAP-tarjoajan yleiskatsaus (testi-instanssi)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-provider.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=9aa4b747f4c0f51533454a97d835c18c" alt="" width="990" height="773" data-path="images/on-premises/ldap-authentik-provider.png" />
    </Frame>

    Älä kopioi esimerkkiarvoja sellaisenaan:

    * **Bind DN** näyttää tilin, jolla olet kirjautunut. Käytä sen sijaan vaiheen 1 sidontatiliä: `cn=ldapservice,ou=users,<Base DN>`.
    * **Search base** näyttää Base DN:n. Käytä arvoa `ou=users,<Base DN>`.

    ```dotenv theme={null}
    OVERLEAF_LDAP_BIND_DN=cn=ldapservice,ou=users,dc=example,dc=com
    OVERLEAF_LDAP_BIND_CREDENTIALS=<password of ldapservice>
    OVERLEAF_LDAP_SEARCH_BASE=ou=users,dc=example,dc=com
    OVERLEAF_LDAP_SEARCH_FILTER=(cn={{username}})
    ```

    <Warning>
      Authentik ylläpitää jokaisen käyttäjän nimistä ryhmää kohdassa `ou=virtual-groups`. Kun koko Base DN:stä haetaan `(cn=alice)`, löytyvät sekä `cn=alice,ou=users,…` että `cn=alice,ou=virtual-groups,…`, ja Overleaf hylkää kirjautumisen, joka vastaa useampaa kuin yhtä merkintää. Pidä hakukantana `ou=users,<Base DN>`.
    </Warning>
  </Step>

  <Step title="Tarkista haku">
    Ennen kuin käynnistät Overleafin, suorita sama haku, jonka se tekee. Sen on tulostettava täsmälleen yksi `dn:`:

    ```shell theme={null}
    ldapsearch -x -H ldap://ldap.example.com:389 \
      -D cn=ldapservice,ou=users,dc=example,dc=com -w '<password of ldapservice>' \
      -b ou=users,dc=example,dc=com '(cn=alice)' dn
    ```

    Jos `dn:`-riviä ei tule lainkaan, vaiheen 3 oikeus yleensä puuttuu.
  </Step>

  <Step title="Määritä ylläpitäjät (valinnainen)">
    Käyttäjän ryhmät ovat attribuutissa `memberOf` DN-muodossa kohdan `ou=groups` alla. Jos haluat Authentik-ryhmän `Admins` jäsenistä Overleafin ylläpitäjiä:

    ```dotenv theme={null}
    OVERLEAF_LDAP_IS_ADMIN_ATT=memberOf
    OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE=cn=Admins,ou=groups,dc=example,dc=com
    ```

    <Warning>
      Ylläpitäjän tila päivitetään jokaisella LDAP-kirjautumisella. Jos attribuutti tai arvo on väärä, jokainen LDAP:n kautta kirjautuva ylläpitäjä menettää ylläpitäjän oikeutensa. Testaa määritys ensin toisella ylläpitäjätilillä.
    </Warning>
  </Step>
</Steps>

<Accordion title="Testattu variables.env-tiedosto goauthentikille">
  ```dotenv title="variables.env" wrap theme={null}
  EXTERNAL_AUTH=ldap
  OVERLEAF_LDAP_IDENTITY_SERVICE_NAME=Log in with Authentik
  OVERLEAF_LDAP_URL=ldap://ldap.example.com:389
  OVERLEAF_LDAP_BIND_DN=cn=ldapservice,ou=users,dc=example,dc=com
  OVERLEAF_LDAP_BIND_CREDENTIALS=<password of ldapservice>
  OVERLEAF_LDAP_SEARCH_BASE=ou=users,dc=example,dc=com
  OVERLEAF_LDAP_SEARCH_FILTER=(cn={{username}})
  OVERLEAF_LDAP_EMAIL_ATT=mail
  OVERLEAF_LDAP_NAME_ATT=name
  OVERLEAF_LDAP_IS_ADMIN_ATT=memberOf
  OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE=cn=Admins,ou=groups,dc=example,dc=com
  OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN=true
  ```
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.