> ## 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.

# Ověřování LDAP

<Info>
  Tuto funkci vyvinul [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Zde vám nabízíme dokumentaci pro její konfiguraci.
</Info>

<Warning>
  Overleaf používá knihovnu **passport-ldapauth**, která je poměrně zastaralá, a proto nelze plně zaručit kompatibilitu s LDAP. U některých poskytovatelů identit LDAP (například [https://goauthentik.io/](https://goauthentik.io/)) může docházet k selhání přihlášení. Pokud je to možné, doporučujeme proto přednostně použít metodu OAuth/SAML. Pro goauthentik postupujte podle otestovaného návodu [Postup krok za krokem: goauthentik](/cs/on-premises/configuration/overleaf-toolkit/authentication/ldap-authentication#postup-krok-za-krokem-goauthentik) níže.
</Warning>

### Co je LDAP

LDAP je ověřovací protokol používaný k externímu ověřování identity. Overleaf Server Pro poskytuje ve webovém rozhraní samostatný přihlašovací formulář LDAP, oddělený od standardní metody ověřování. Když uživatel odešle své uživatelské jméno a heslo LDAP, backend Overleaf ověří přihlašovací údaje vůči nakonfigurovanému serveru LDAP, například `ldap://ldap:10389`.

<Frame caption="Příklad LDAP v Server Pro">
  <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>

### Konfigurace

Interně používá LDAP v Overleaf knihovnu [passport-ldapauth](https://github.com/vesse/passport-ldapauth). Většina těchto konfiguračních voleb se předává do konfiguračního objektu `server`, který slouží ke konfiguraci `passport-ldapauth`. Pokud máte s konfigurací LDAP potíže, vyplatí se přečíst si README knihovny `passport-ldapauth`, abyste získali představu o tom, jakou konfiguraci očekává.

K povolení modulu ověřování LDAP je vyžadována proměnná prostředí `EXTERNAL_AUTH`. Tato proměnná prostředí určuje, které externí metody ověřování jsou aktivovány. Její hodnotou je seznam. Pokud seznam obsahuje `ldap`, bude aktivováno ověřování LDAP.

Například: `EXTERNAL_AUTH=ldap saml`

Na rozdíl od Overleaf CEP omezujeme v naší edici ayaka-notes ověřování LDAP na čistě ověřovací metodu, která je dostupná na adrese `http://your-overleaf.com/ldap/login`.

Při použití metod ověřování LDAP zadá uživatel do přihlašovacího formuláře `username` a `password` a provede se následující:

1. V adresáři LDAP se vyhledá uživatel LDAP pomocí filtru definovaného v `OVERLEAF_LDAP_SEARCH_FILTER` a ověří se.
2. Pokud je ověření úspěšné, v databázi uživatelů Overleaf se vyhledá uživatel, jehož primární e-mailová adresa odpovídá e-mailové adrese ověřeného uživatele LDAP:
   * Pokud se odpovídající uživatel najde, pole `hashedPassword` tohoto uživatele se smaže (pokud existuje). Tím se zajistí, že se uživatel bude moci v budoucnu přihlašovat pouze prostřednictvím ověřování LDAP.
   * Pokud se odpovídající uživatel nenajde, vytvoří se nový uživatel Overleaf s e-mailem, křestním jménem a příjmením získanými ze serveru LDAP.

<Danger>
  U uživatelů, kteří se přihlašují přes LDAP, neukládáme v databázi mongo Overleaf hashovaná hesla (a existující odstraňujeme).
</Danger>

#### Proměnné prostředí

* `OVERLEAF_LDAP_URL` <strong>(povinné)</strong>
  * URL serveru LDAP.
    * Příklad: `ldaps://ldap.example.com:636` (LDAP přes SSL)
    * Příklad: `ldap://ldap.example.com:389` (nešifrované nebo STARTTLS, pokud je nakonfigurováno).
* `OVERLEAF_LDAP_IDENTITY_SERVICE_NAME`
  * Zobrazovaný název služby identit LDAP, používaný na přihlašovací stránce.
  * Výchozí hodnota je `Log in with LDAP Provider`.
* `OVERLEAF_LDAP_EMAIL_ATT`
  * Atribut e-mailu vracený serverem LDAP, výchozí `mail`. Každý uživatel LDAP musí mít alespoň jednu e-mailovou adresu. Pokud je zadáno více adres, použije se pouze první z nich.
* `OVERLEAF_LDAP_FIRST_NAME_ATT`
  * Název vlastnosti obsahující křestní jméno uživatele, které se používá v aplikaci, obvykle `givenName`.
* `OVERLEAF_LDAP_LAST_NAME_ATT`
  * Název vlastnosti obsahující příjmení uživatele, které se používá v aplikaci, obvykle `sn`.
* `OVERLEAF_LDAP_NAME_ATT`
  * Název vlastnosti obsahující celé jméno uživatele, obvykle `cn`. Pokud některá z předchozích dvou proměnných není definována, křestní jméno a/nebo příjmení uživatele se získá z této proměnné. V opačném případě se nepoužívá.
* `OVERLEAF_LDAP_PLACEHOLDER`
  * Zástupný text pro přihlašovací formulář, výchozí hodnota je `Username`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Pokud je nastaveno na `true`, aktualizují se při přihlášení pole `first_name` a `last_name` uživatele LDAP a pro uživatele LDAP se vypne formulář s údaji o uživateli na stránce `/user/settings`. V opačném případě se údaje načtou pouze při prvním přihlášení.
* `OVERLEAF_LDAP_BIND_DN`
  * Rozlišující jméno (DN) uživatele LDAP, který se má použít pro připojení k LDAP (tento uživatel by měl mít možnost vyhledávat/vypisovat účty na serveru LDAP), např. `cn=ldap_reader,dc=example,dc=com`. Pokud není definováno, použije se anonymní vazba (bind).
* `OVERLEAF_LDAP_BIND_CREDENTIALS`
  * Heslo pro `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * Vlastnost uživatele, vůči níž se provádí vazba klienta, výchozí hodnota je `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` <strong>(povinné)</strong>
  * Základní DN, od kterého se uživatelé vyhledávají. Např. `ou=people,dc=example,dc=com`.
* `OVERLEAF_LDAP_SEARCH_FILTER`
  * Vyhledávací filtr LDAP, pomocí kterého se uživatel vyhledá. Použijte literál '\{\{username}}', aby se do vyhledávání LDAP dosadilo zadané uživatelské jméno.
    * Příklad: `(|(uid={{username}})(mail={{username}}))` (uživatel se může přihlásit e-mailem nebo přihlašovacím jménem).
    * Příklad: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Rozsah vyhledávání může být `base`, `one` nebo `sub` (výchozí).
* `OVERLEAF_LDAP_SEARCH_ATTRIBUTES`
  * Pole JSON s atributy, které se mají načíst ze serveru LDAP, např. `["uid", "mail", "givenName", "sn"]`. Ve výchozím nastavení se načítají všechny atributy.
* `OVERLEAF_LDAP_STARTTLS`
  * Pokud je `true`, použije se LDAP přes TLS.
* `OVERLEAF_LDAP_TLS_OPTS_CA_PATH`
  * Cesta k souboru s certifikátem CA, který se používá k ověření certifikátu SSL/TLS serveru LDAP. Pokud je certifikátů více, může jít o pole JSON s cestami k certifikátům. Soubory musí být přístupné z kontejneru Dockeru.
    * Příklad (jeden certifikát): `/var/lib/overleaf/certs/ldap_ca_cert.pem`
    * Příklad (více certifikátů): `["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]`
* `OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH`
  * Pokud je `true`, certifikát serveru se ověřuje vůči seznamu zadaných CA.
* `OVERLEAF_LDAP_CACHE`
  * Pokud je `true`, bude se najednou cachovat až 100 přihlašovacích údajů po dobu 5 minut.
* `OVERLEAF_LDAP_TIMEOUT`
  * Jak dlouho má klient nechat operace běžet, než vyprší časový limit, v ms (výchozí: Infinity).
* `OVERLEAF_LDAP_CONNECT_TIMEOUT`
  * Jak dlouho má klient čekat, než vyprší časový limit TCP spojení, v ms (výchozí: výchozí hodnota OS).
* `OVERLEAF_LDAP_IS_ADMIN_ATT` a `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`
  * Pokud jsou nastaveny obě proměnné prostředí, proces přihlášení nastaví `user.isAdmin = true`, jestliže profil LDAP obsahuje atribut určený proměnnou `OVERLEAF_LDAP_IS_ADMIN_ATT` a jeho hodnota buď odpovídá `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`, nebo je to pole obsahující `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`; v opačném případě se `user.isAdmin` nastaví na `false`. Pokud některá z těchto proměnných není nastavena, nastaví se stav správce na `true` pouze při vytváření účtu správce v Launchpadu.

Následujících pět proměnných slouží ke konfiguraci toho, jak se ze serveru LDAP načítají kontakty uživatelů.

* `OVERLEAF_LDAP_CONTACTS_FILTER`
  * Filtr používaný k vyhledání uživatelů na serveru LDAP, kteří se mají načíst do kontaktů. Zástupný symbol '\{\{userProperty}}' ve filtru se nahradí hodnotou vlastnosti určené proměnnou `OVERLEAF_LDAP_CONTACTS_PROPERTY` u uživatele LDAP, který vyhledávání spustil. Pokud není definován, nenačítají se do kontaktů ze serveru LDAP žádní uživatelé.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_BASE`
  * Určuje základní DN, od kterého se začnou kontakty vyhledávat. Výchozí hodnota je `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Rozsah vyhledávání může být `base`, `one` nebo `sub` (výchozí).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * Určuje vlastnost objektu uživatele, která nahradí zástupný symbol '\{\{userProperty}}' v `OVERLEAF_LDAP_CONTACTS_FILTER`.
* `OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE`
  * Určuje hodnotu `OVERLEAF_LDAP_CONTACTS_PROPERTY` pro případ, že vyhledávání spustí uživatel, který není uživatelem LDAP. Pokud tato proměnná není definována, výsledný filtr nebude odpovídat ničemu. Jako zástupný znak lze použít hodnotu `*`.

<Accordion title="Příklad">
  ```text theme={null}
  OVERLEAF_LDAP_CONTACTS_FILTER=(gidNumber={{userProperty}})
  OVERLEAF_LDAP_CONTACTS_PROPERTY=gidNumber
  OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE=1000
  ```

  Výše uvedený příklad způsobí, že se do kontaktů aktuálního uživatele LDAP načtou všichni uživatelé LDAP se stejným UNIXovým `gid`. Uživatelé, kteří nejsou uživateli LDAP, budou mít v kontaktech všechny uživatele LDAP s UNIXovým `gid=1000`.
</Accordion>

<Accordion title="Ukázkový soubor variables.env">
  ```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>

## Postup krok za krokem: goauthentik

Tento návod popisuje nastavení otestované s [goauthentik](https://goauthentik.io/). Příklady používají Base DN `dc=example,dc=com`; nahraďte jej svým.

<Steps>
  <Step title="Vytvořte účet pro bind">
    Overleaf se nejprve přihlásí do adresáře vlastním účtem, aby našel uživatele. V Authentiku otevřete **Directory > Users**, klikněte na **New User**, zvolte **Internal User** a klikněte na **Next**. Zadejte uživatelské jméno, například `ldapservice`, a klikněte na **Create**:

    <Frame caption="Authentik: vytvoření účtu pro bind">
      <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>

    Otevřete nového uživatele a klikněte na **Set password**. Toto heslo patří do `OVERLEAF_LDAP_BIND_CREDENTIALS`:

    <div style={{ textAlign: "center" }}>
      <Frame caption="Authentik: nastavení hesla účtu pro bind (testovací instance)">
        <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>

    Poznamenejte si číslo uživatele v adresním řádku, například `19` v `…/#/identity/users/19`. Budete ho potřebovat v kroku 3.
  </Step>

  <Step title="Vytvořte poskytovatele a aplikaci">
    Otevřete **Applications > Applications** a klikněte na **New Application**. Průvodce vytvoří aplikaci a jejího poskytovatele najednou.

    1\. Zadejte název a slug aplikace, například `overleaf-ldap`, a klikněte na **Next**:

    <Frame caption="Authentik: název a slug aplikace">
      <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\. Zvolte **LDAP Provider** a klikněte na **Next**:

    <Frame caption="Authentik: výběr poskytovatele LDAP">
      <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\. Nastavte **Bind Mode** na **Direct binding** a **Search Mode** na **Direct querying**:

    <Frame caption="Authentik: režim bind a režim vyhledávání poskytovatele LDAP">
      <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\. Níže nastavte **Bind Flow** na `default-authentication-flow` a **Base DN** na váš Base DN, například `dc=example,dc=com`:

    <Frame caption="Authentik: bind flow a Base DN poskytovatele LDAP">
      <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\. Klikejte na **Next** až na poslední stránku a aplikaci odešlete.
  </Step>

  <Step title="Povolte účtu pro bind prohledávat adresář">
    Bez tohoto oprávnění vidí účet pro bind jen sám sebe, vyhledávání nenajde žádného uživatele a každé přihlášení přes LDAP selže.

    Otevřete poskytovatele, přejděte na **Permissions** a klikněte na **Assign Role Object Permission**. Do pole **Role** zadejte číslo z kroku 1, vyberte `ak-managed-role--user-<number>` a poté zapněte **Search full LDAP directory**:

    <Frame caption="Authentik: udělení oprávnění k vyhledávání účtu pro bind (testovací instance)">
      <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>

    Role pak ve sloupci **Search full LDAP directory** zobrazí zaškrtnutí:

    <Frame caption="Authentik: oprávnění poskytovatele LDAP (testovací instance)">
      <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="Spusťte LDAP outpost">
    Authentik odpovídá na LDAP prostřednictvím outpostu, samostatného kontejneru. Otevřete **Applications > Outposts**, vytvořte outpost typu **LDAP** s vaším poskytovatelem a nasaďte jej podle popisu v dokumentaci Authentiku. Naslouchá na portu 389 hostitele, na kterém běží. Když je připojen, zobrazí zelené zaškrtnutí:

    <Frame caption="Authentik: běžící LDAP outpost (testovací instance)">
      <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="Vyplňte DN">
    Stránka poskytovatele zobrazuje Base DN a příklad v části **How to connect**:

    <Frame caption="Authentik: přehled poskytovatele LDAP (testovací instance)">
      <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>

    Nekopírujte ukázkové hodnoty tak, jak jsou:

    * **Bind DN** zobrazuje účet, se kterým jste přihlášeni. Místo něj použijte účet pro bind z kroku 1: `cn=ldapservice,ou=users,<Base DN>`.
    * **Search base** zobrazuje Base DN. Použijte `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 udržuje pod `ou=virtual-groups` skupinu se jménem každého uživatele. Vyhledávání `(cn=alice)` v celém Base DN najde jak `cn=alice,ou=users,…`, tak `cn=alice,ou=virtual-groups,…`, a Overleaf odmítne přihlášení, které odpovídá více než jednomu záznamu. Ponechte search base na `ou=users,<Base DN>`.
    </Warning>
  </Step>

  <Step title="Ověřte vyhledávání">
    Před spuštěním Overleafu spusťte stejné vyhledávání, jaké bude provádět on. Musí vypsat právě jeden `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
    ```

    Pokud se nevypíše žádný `dn:`, obvykle chybí oprávnění z kroku 3.
  </Step>

  <Step title="Namapujte administrátory (volitelné)">
    Skupiny uživatele jsou v `memberOf` jako DN pod `ou=groups`. Chcete-li, aby se členové skupiny Authentiku `Admins` stali administrátory Overleafu:

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

    <Warning>
      Příznak administrátora se aktualizuje při každém přihlášení přes LDAP. Při chybném atributu nebo hodnotě přijde každý administrátor, který se přihlásí přes LDAP, o administrátorská práva. Mapování nejprve otestujte s druhým administrátorským účtem.
    </Warning>
  </Step>
</Steps>

<Accordion title="Otestovaný soubor variables.env pro goauthentik">
  ```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.