Czym jest LDAP
LDAP to protokół uwierzytelniania używany do zewnętrznej weryfikacji tożsamości. Overleaf Server Pro udostępnia w interfejsie webowym dedykowany formularz logowania LDAP, oddzielny od standardowej metody uwierzytelniania. Gdy użytkownik przesyła swoją nazwę użytkownika i hasło LDAP, backend Overleaf weryfikuje dane uwierzytelniające na skonfigurowanym serwerze LDAP, na przykładldap://ldap:10389.

Przykład LDAP w Server Pro
Konfiguracja
Wewnętrznie mechanizm LDAP w Overleaf korzysta z biblioteki passport-ldapauth. Większość opcji konfiguracyjnych jest przekazywana do obiektu konfiguracyjnegoserver, który służy do konfigurowania passport-ldapauth. Jeśli masz problemy z konfiguracją LDAP, warto przeczytać README biblioteki passport-ldapauth, aby zorientować się, jakiej konfiguracji oczekuje.
Do włączenia modułu uwierzytelniania LDAP wymagana jest zmienna środowiskowa EXTERNAL_AUTH. Określa ona, które zewnętrzne metody uwierzytelniania są aktywne. Wartością tej zmiennej jest lista. Jeśli lista zawiera ldap, uwierzytelnianie LDAP zostanie aktywowane.
Na przykład: EXTERNAL_AUTH=ldap saml
W odróżnieniu od Overleaf CEP, w naszej edycji ayaka-notes uwierzytelnianie LDAP ograniczamy do czystej metody uwierzytelniania, dostępnej pod adresem http://your-overleaf.com/ldap/login.
Gdy używana jest metoda uwierzytelniania LDAP, a użytkownik wpisze w formularzu logowania username i password, wykonywane są następujące kroki:
- Użytkownik LDAP jest wyszukiwany w katalogu LDAP przy użyciu filtra zdefiniowanego w
OVERLEAF_LDAP_SEARCH_FILTER, a następnie uwierzytelniany. - Jeśli uwierzytelnienie się powiedzie, w bazie użytkowników Overleaf wyszukiwany jest użytkownik, którego główny adres e-mail odpowiada adresowi e-mail uwierzytelnionego użytkownika LDAP:
- Jeśli zostanie znaleziony pasujący użytkownik, pole
hashedPasswordtego użytkownika jest usuwane (jeśli istnieje). Dzięki temu w przyszłości użytkownik będzie mógł logować się wyłącznie przez uwierzytelnianie LDAP. - Jeśli pasujący użytkownik nie zostanie znaleziony, tworzony jest nowy użytkownik Overleaf z adresem e-mail, imieniem i nazwiskiem pobranymi z serwera LDAP.
- Jeśli zostanie znaleziony pasujący użytkownik, pole
Zmienne środowiskowe
OVERLEAF_LDAP_URL(wymagana)- Adres URL serwera LDAP.
- Przykład:
ldaps://ldap.example.com:636(LDAP przez SSL) - Przykład:
ldap://ldap.example.com:389(bez szyfrowania lub STARTTLS, jeśli jest skonfigurowany).
- Przykład:
- Adres URL serwera LDAP.
OVERLEAF_LDAP_IDENTITY_SERVICE_NAME- Wyświetlana nazwa usługi tożsamości LDAP, używana na stronie logowania.
- Domyślnie
Log in with LDAP Provider.
OVERLEAF_LDAP_EMAIL_ATT- Atrybut adresu e-mail zwracany przez serwer LDAP, domyślnie
mail. Każdy użytkownik LDAP musi mieć co najmniej jeden adres e-mail. Jeśli podano kilka adresów, używany jest tylko pierwszy.
- Atrybut adresu e-mail zwracany przez serwer LDAP, domyślnie
OVERLEAF_LDAP_FIRST_NAME_ATT- Nazwa właściwości zawierającej imię użytkownika używane w aplikacji, zwykle
givenName.
- Nazwa właściwości zawierającej imię użytkownika używane w aplikacji, zwykle
OVERLEAF_LDAP_LAST_NAME_ATT- Nazwa właściwości zawierającej nazwisko użytkownika używane w aplikacji, zwykle
sn.
- Nazwa właściwości zawierającej nazwisko użytkownika używane w aplikacji, zwykle
OVERLEAF_LDAP_NAME_ATT- Nazwa właściwości zawierającej pełne imię i nazwisko użytkownika, zwykle
cn. Jeśli któraś z dwóch poprzednich zmiennych nie jest zdefiniowana, imię i/lub nazwisko użytkownika jest wyodrębniane z tej wartości. W przeciwnym razie nie jest ona używana.
- Nazwa właściwości zawierającej pełne imię i nazwisko użytkownika, zwykle
OVERLEAF_LDAP_PLACEHOLDER- Tekst zastępczy (placeholder) w formularzu logowania, domyślnie
Username.
- Tekst zastępczy (placeholder) w formularzu logowania, domyślnie
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Jeśli ustawiona na
true, przy logowaniu aktualizuje polafirst_nameilast_nameużytkownika LDAP oraz wyłącza formularz danych użytkownika na stronie/user/settingsdla użytkowników LDAP. W przeciwnym razie dane są pobierane tylko przy pierwszym logowaniu.
- Jeśli ustawiona na
OVERLEAF_LDAP_BIND_DN- Nazwa wyróżniająca (DN) użytkownika LDAP, który ma być używany do połączenia z LDAP (ten użytkownik powinien mieć możliwość wyszukiwania/wyświetlania kont na serwerze LDAP), np.
cn=ldap_reader,dc=example,dc=com. Jeśli nie jest zdefiniowana, używane jest wiązanie anonimowe.
- Nazwa wyróżniająca (DN) użytkownika LDAP, który ma być używany do połączenia z LDAP (ten użytkownik powinien mieć możliwość wyszukiwania/wyświetlania kont na serwerze LDAP), np.
OVERLEAF_LDAP_BIND_CREDENTIALS- Hasło dla
OVERLEAF_LDAP_BIND_DN.
- Hasło dla
OVERLEAF_LDAP_BIND_PROPERTY- Właściwość użytkownika używana do wiązania z klientem, domyślnie
dn.
- Właściwość użytkownika używana do wiązania z klientem, domyślnie
OVERLEAF_LDAP_SEARCH_BASE(wymagana)- Bazowy DN, od którego rozpoczyna się wyszukiwanie użytkowników. Np.
ou=people,dc=example,dc=com.
- Bazowy DN, od którego rozpoczyna się wyszukiwanie użytkowników. Np.
OVERLEAF_LDAP_SEARCH_FILTER- Filtr wyszukiwania LDAP służący do znalezienia użytkownika. Użyj literału ‘{{username}}’, aby podana nazwa użytkownika została wstawiona do wyszukiwania LDAP.
- Przykład:
(|(uid={{username}})(mail={{username}}))(użytkownik może logować się adresem e-mail lub nazwą logowania). - Przykład:
(sAMAccountName={{username}})(Active Directory).
- Przykład:
- Filtr wyszukiwania LDAP służący do znalezienia użytkownika. Użyj literału ‘{{username}}’, aby podana nazwa użytkownika została wstawiona do wyszukiwania LDAP.
OVERLEAF_LDAP_SEARCH_SCOPE- Zakres wyszukiwania może mieć wartość
base,onelubsub(domyślnie).
- Zakres wyszukiwania może mieć wartość
OVERLEAF_LDAP_SEARCH_ATTRIBUTES- Tablica JSON atrybutów pobieranych z serwera LDAP, np.
["uid", "mail", "givenName", "sn"]. Domyślnie pobierane są wszystkie atrybuty.
- Tablica JSON atrybutów pobieranych z serwera LDAP, np.
OVERLEAF_LDAP_STARTTLS- Jeśli
true, używany jest LDAP przez TLS.
- Jeśli
OVERLEAF_LDAP_TLS_OPTS_CA_PATH- Ścieżka do pliku z certyfikatem CA używanym do weryfikacji certyfikatu SSL/TLS serwera LDAP. Jeśli certyfikatów jest kilka, może to być tablica JSON ze ścieżkami do certyfikatów. Pliki muszą być dostępne dla kontenera Docker.
- Przykład (jeden certyfikat):
/var/lib/overleaf/certs/ldap_ca_cert.pem - Przykład (wiele certyfikatów):
["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
- Przykład (jeden certyfikat):
- Ścieżka do pliku z certyfikatem CA używanym do weryfikacji certyfikatu SSL/TLS serwera LDAP. Jeśli certyfikatów jest kilka, może to być tablica JSON ze ścieżkami do certyfikatów. Pliki muszą być dostępne dla kontenera Docker.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Jeśli
true, certyfikat serwera jest weryfikowany względem listy podanych CA.
- Jeśli
OVERLEAF_LDAP_CACHE- Jeśli
true, jednocześnie do 100 danych uwierzytelniających będzie przechowywanych w pamięci podręcznej przez 5 minut.
- Jeśli
OVERLEAF_LDAP_TIMEOUT- Jak długo klient pozwala na trwanie operacji przed przekroczeniem limitu czasu, w ms (domyślnie: Infinity).
OVERLEAF_LDAP_CONNECT_TIMEOUT- Jak długo klient czeka na nawiązanie połączenia TCP przed przekroczeniem limitu czasu, w ms (domyślnie: wartość domyślna systemu operacyjnego).
OVERLEAF_LDAP_IS_ADMIN_ATTiOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Gdy ustawione są obie zmienne środowiskowe, proces logowania ustawia
user.isAdmin = true, jeśli profil LDAP zawiera atrybut wskazany przezOVERLEAF_LDAP_IS_ADMIN_ATT, a jego wartość jest równaOVERLEAF_LDAP_IS_ADMIN_ATT_VALUElub jest tablicą zawierającąOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; w przeciwnym razieuser.isAdminjest ustawiane nafalse. Jeśli którakolwiek z tych zmiennych nie jest ustawiona, status administratora jest ustawiany natruetylko podczas tworzenia konta administratora w Launchpad.
- Gdy ustawione są obie zmienne środowiskowe, proces logowania ustawia
OVERLEAF_LDAP_CONTACTS_FILTER- Filtr używany do wyszukiwania na serwerze LDAP użytkowników, którzy mają zostać wczytani do kontaktów. Symbol zastępczy ‘{{userProperty}}’ w filtrze jest zastępowany wartością właściwości wskazanej przez
OVERLEAF_LDAP_CONTACTS_PROPERTYużytkownika LDAP inicjującego wyszukiwanie. Jeśli zmienna nie jest zdefiniowana, żaden użytkownik nie jest pobierany z serwera LDAP do kontaktów.
- Filtr używany do wyszukiwania na serwerze LDAP użytkowników, którzy mają zostać wczytani do kontaktów. Symbol zastępczy ‘{{userProperty}}’ w filtrze jest zastępowany wartością właściwości wskazanej przez
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE- Określa bazowy DN, od którego rozpoczyna się wyszukiwanie kontaktów. Domyślnie
OVERLEAF_LDAP_SEARCH_BASE.
- Określa bazowy DN, od którego rozpoczyna się wyszukiwanie kontaktów. Domyślnie
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- Zakres wyszukiwania może mieć wartość
base,onelubsub(domyślnie).
- Zakres wyszukiwania może mieć wartość
OVERLEAF_LDAP_CONTACTS_PROPERTY- Określa właściwość obiektu użytkownika, która zastąpi symbol zastępczy ‘{{userProperty}}’ w
OVERLEAF_LDAP_CONTACTS_FILTER.
- Określa właściwość obiektu użytkownika, która zastąpi symbol zastępczy ‘{{userProperty}}’ w
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Określa wartość
OVERLEAF_LDAP_CONTACTS_PROPERTY, jeśli wyszukiwanie inicjuje użytkownik spoza LDAP. Jeśli ta zmienna nie jest zdefiniowana, wynikowy filtr nie dopasuje niczego. Wartość*może być używana jako symbol wieloznaczny.
- Określa wartość
Przykład
Przykład
gid. Użytkownicy spoza LDAP będą mieli w kontaktach wszystkich użytkowników LDAP z UNIX-owym gid=1000.Przykładowy plik variables.env
Przykładowy plik variables.env
Krok po kroku: goauthentik
Poniżej opisano konfigurację przetestowaną z goauthentik. W przykładach użyto Base DNdc=example,dc=com; zastąp go własnym.
Utwórz konto do wiązania (bind)
ldapservice, i kliknij Create:
Authentik: tworzenie konta do wiązania
OVERLEAF_LDAP_BIND_CREDENTIALS:
Authentik: ustawianie hasła konta do wiązania (instancja testowa)
19 w …/#/identity/users/19. Będzie potrzebny w kroku 3.Utwórz dostawcę i aplikację
overleaf-ldap, i kliknij Next:
Authentik: nazwa i slug aplikacji

Authentik: wybór dostawcy LDAP

Authentik: tryb wiązania i wyszukiwania dostawcy LDAP
default-authentication-flow, a Base DN na swój Base DN, na przykład dc=example,dc=com:
Authentik: przepływ wiązania i Base DN dostawcy LDAP
Zezwól kontu do wiązania na przeszukiwanie katalogu
ak-managed-role--user-<number>, a następnie włącz Search full LDAP directory:
Authentik: nadawanie kontu do wiązania uprawnienia wyszukiwania (instancja testowa)

Authentik: uprawnienia dostawcy LDAP (instancja testowa)
Uruchom outpost LDAP

Authentik: działający outpost LDAP (instancja testowa)
Uzupełnij DN

Authentik: przegląd dostawcy LDAP (instancja testowa)
- Bind DN pokazuje konto, na które jesteś zalogowany. Zamiast tego użyj konta do wiązania z kroku 1:
cn=ldapservice,ou=users,<Base DN>. - Search base pokazuje Base DN. Użyj
ou=users,<Base DN>.
Sprawdź wyszukiwanie
dn::dn: zwykle oznacza, że brakuje uprawnienia z kroku 3.Zmapuj administratorów (opcjonalnie)
memberOf jako DN w ou=groups. Aby członkowie grupy Authentik Admins stali się administratorami Overleaf:Przetestowany plik variables.env dla goauthentik
Przetestowany plik variables.env dla goauthentik

