Skip to main content
Tuto funkci vyvinul yu-i-i/overleaf-cep. Zde vám nabízíme dokumentaci pro její konfiguraci.
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/) 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 níže.

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.

Příklad LDAP v Server Pro

Konfigurace

Interně používá LDAP v Overleaf knihovnu 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.
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).

Proměnné prostředí

  • OVERLEAF_LDAP_URL (povinné)
    • 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 (povinné)
    • 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 *.
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.

Postup krok za krokem: goauthentik

Tento návod popisuje nastavení otestované s goauthentik. Příklady používají Base DN dc=example,dc=com; nahraďte jej svým.
1

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:

Authentik: vytvoření účtu pro bind

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

Authentik: nastavení hesla účtu pro bind (testovací instance)

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

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:

Authentik: název a slug aplikace

2. Zvolte LDAP Provider a klikněte na Next:

Authentik: výběr poskytovatele LDAP

3. Nastavte Bind Mode na Direct binding a Search Mode na Direct querying:

Authentik: režim bind a režim vyhledávání poskytovatele LDAP

4. Níže nastavte Bind Flow na default-authentication-flow a Base DN na váš Base DN, například dc=example,dc=com:

Authentik: bind flow a Base DN poskytovatele LDAP

5. Klikejte na Next až na poslední stránku a aplikaci odešlete.
3

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:

Authentik: udělení oprávnění k vyhledávání účtu pro bind (testovací instance)

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

Authentik: oprávnění poskytovatele LDAP (testovací instance)

4

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í:

Authentik: běžící LDAP outpost (testovací instance)

5

Vyplňte DN

Stránka poskytovatele zobrazuje Base DN a příklad v části How to connect:

Authentik: přehled poskytovatele LDAP (testovací instance)

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

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::
Pokud se nevypíše žádný dn:, obvykle chybí oprávnění z kroku 3.
7

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:
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.
variables.env
Naposledy změněno 6. října 2026