Що таке LDAP
LDAP — це протокол автентифікації, що використовується для зовнішньої перевірки особи. Overleaf Server Pro надає у вебінтерфейсі окрему форму входу через LDAP, відокремлену від стандартного методу автентифікації. Коли користувач надсилає своє ім’я користувача та пароль LDAP, бекенд Overleaf перевіряє облікові дані на налаштованому сервері LDAP, наприкладldap://ldap:10389.

Приклад LDAP у Server Pro
Конфігурація
Усередині LDAP в Overleaf використовує бібліотеку passport-ldapauth. Більшість цих параметрів конфігурації передаються в об’єкт конфігураціїserver, який використовується для налаштування passport-ldapauth. Якщо у вас виникли проблеми з налаштуванням LDAP, варто прочитати README для passport-ldapauth, щоб зрозуміти, яку конфігурацію вона очікує.
Для ввімкнення модуля автентифікації LDAP потрібна змінна середовища EXTERNAL_AUTH. Вона визначає, які зовнішні методи автентифікації активовано. Значенням цієї змінної є список. Якщо список містить ldap, автентифікацію LDAP буде активовано.
Наприклад: EXTERNAL_AUTH=ldap saml
На відміну від Overleaf CEP, у нашій редакції ayaka-notes автентифікація LDAP обмежена роллю суто методу автентифікації, доступного за адресою http://your-overleaf.com/ldap/login.
Коли під час використання методів автентифікації LDAP користувач вводить у форму входу username і password, відбувається така спроба:
- У каталозі LDAP виконується пошук користувача LDAP за фільтром, визначеним у
OVERLEAF_LDAP_SEARCH_FILTER, і його автентифікація. - Якщо автентифікація успішна, у базі даних користувачів Overleaf шукається користувач, основна адреса електронної пошти якого збігається з адресою автентифікованого користувача LDAP:
- Якщо відповідного користувача знайдено, поле
hashedPasswordцього користувача видаляється (якщо воно існує). Це гарантує, що надалі користувач зможе входити лише через автентифікацію LDAP. - Якщо відповідного користувача не знайдено, створюється новий користувач Overleaf з електронною поштою, ім’ям і прізвищем, отриманими із сервера LDAP.
- Якщо відповідного користувача знайдено, поле
Змінні середовища
OVERLEAF_LDAP_URL(обов’язкова)- URL сервера LDAP.
- Приклад:
ldaps://ldap.example.com:636(LDAP через SSL) - Приклад:
ldap://ldap.example.com:389(без шифрування або STARTTLS, якщо налаштовано).
- Приклад:
- URL сервера LDAP.
OVERLEAF_LDAP_IDENTITY_SERVICE_NAME- Відображувана назва служби ідентифікації LDAP, що використовується на сторінці входу.
- За замовчуванням
Log in with LDAP Provider.
OVERLEAF_LDAP_EMAIL_ATT- Атрибут електронної пошти, що повертає сервер LDAP, за замовчуванням
mail. Кожен користувач LDAP повинен мати щонайменше одну адресу електронної пошти. Якщо надано кілька адрес, використовується лише перша.
- Атрибут електронної пошти, що повертає сервер LDAP, за замовчуванням
OVERLEAF_LDAP_FIRST_NAME_ATT- Назва властивості, що містить ім’я користувача, яке використовується в застосунку, зазвичай
givenName.
- Назва властивості, що містить ім’я користувача, яке використовується в застосунку, зазвичай
OVERLEAF_LDAP_LAST_NAME_ATT- Назва властивості, що містить прізвище користувача, яке використовується в застосунку, зазвичай
sn.
- Назва властивості, що містить прізвище користувача, яке використовується в застосунку, зазвичай
OVERLEAF_LDAP_NAME_ATT- Назва властивості, що містить повне ім’я користувача, зазвичай
cn. Якщо одну з двох попередніх змінних не визначено, ім’я та/або прізвище користувача витягується з цієї змінної. В іншому разі вона не використовується.
- Назва властивості, що містить повне ім’я користувача, зазвичай
OVERLEAF_LDAP_PLACEHOLDER- Заповнювач для форми входу, за замовчуванням
Username.
- Заповнювач для форми входу, за замовчуванням
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Якщо встановлено
true, поляfirst_nameіlast_nameкористувача LDAP оновлюються під час входу, а форма даних користувача на сторінці/user/settingsдля користувачів LDAP вимикається. В іншому разі дані отримуються лише під час першого входу.
- Якщо встановлено
OVERLEAF_LDAP_BIND_DN- Відокремлене ім’я (DN) користувача LDAP, яке слід використовувати для з’єднання з LDAP (цей користувач повинен мати змогу шукати/переглядати облікові записи на сервері LDAP), наприклад
cn=ldap_reader,dc=example,dc=com. Якщо не визначено, використовується анонімна прив’язка.
- Відокремлене ім’я (DN) користувача LDAP, яке слід використовувати для з’єднання з LDAP (цей користувач повинен мати змогу шукати/переглядати облікові записи на сервері LDAP), наприклад
OVERLEAF_LDAP_BIND_CREDENTIALS- Пароль для
OVERLEAF_LDAP_BIND_DN.
- Пароль для
OVERLEAF_LDAP_BIND_PROPERTY- Властивість користувача для прив’язки до клієнта, за замовчуванням
dn.
- Властивість користувача для прив’язки до клієнта, за замовчуванням
OVERLEAF_LDAP_SEARCH_BASE(обов’язкова)- Базовий DN, від якого виконується пошук користувачів. Наприклад,
ou=people,dc=example,dc=com.
- Базовий DN, від якого виконується пошук користувачів. Наприклад,
OVERLEAF_LDAP_SEARCH_FILTER- Фільтр пошуку LDAP для знаходження користувача. Використовуйте літерал ‘{{username}}’, щоб підставити в пошук LDAP введене ім’я користувача.
- Приклад:
(|(uid={{username}})(mail={{username}}))(користувач може входити за електронною поштою або логіном). - Приклад:
(sAMAccountName={{username}})(Active Directory).
- Приклад:
- Фільтр пошуку LDAP для знаходження користувача. Використовуйте літерал ‘{{username}}’, щоб підставити в пошук LDAP введене ім’я користувача.
OVERLEAF_LDAP_SEARCH_SCOPE- Область пошуку може бути
base,oneабоsub(за замовчуванням).
- Область пошуку може бути
OVERLEAF_LDAP_SEARCH_ATTRIBUTES- JSON-масив атрибутів, які потрібно отримати із сервера LDAP, наприклад
["uid", "mail", "givenName", "sn"]. За замовчуванням отримуються всі атрибути.
- JSON-масив атрибутів, які потрібно отримати із сервера LDAP, наприклад
OVERLEAF_LDAP_STARTTLS- Якщо
true, використовується LDAP через TLS.
- Якщо
OVERLEAF_LDAP_TLS_OPTS_CA_PATH- Шлях до файлу із сертифікатом CA, що використовується для перевірки SSL/TLS-сертифіката сервера LDAP. Якщо сертифікатів кілька, це може бути JSON-масив шляхів до сертифікатів. Файли мають бути доступні для Docker-контейнера.
- Приклад (один сертифікат):
/var/lib/overleaf/certs/ldap_ca_cert.pem - Приклад (кілька сертифікатів):
["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
- Приклад (один сертифікат):
- Шлях до файлу із сертифікатом CA, що використовується для перевірки SSL/TLS-сертифіката сервера LDAP. Якщо сертифікатів кілька, це може бути JSON-масив шляхів до сертифікатів. Файли мають бути доступні для Docker-контейнера.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Якщо
true, сертифікат сервера перевіряється за списком наданих CA.
- Якщо
OVERLEAF_LDAP_CACHE- Якщо
true, до 100 облікових даних одночасно кешуватимуться на 5 хвилин.
- Якщо
OVERLEAF_LDAP_TIMEOUT- Скільки часу клієнт дозволяє операціям тривати до тайм-ауту, мс (за замовчуванням: Infinity).
OVERLEAF_LDAP_CONNECT_TIMEOUT- Скільки часу клієнт має чекати до тайм-ауту TCP-з’єднань, мс (за замовчуванням: значення ОС).
OVERLEAF_LDAP_IS_ADMIN_ATTіOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Якщо задано обидві змінні середовища, процес входу встановлює
user.isAdmin = true, якщо профіль LDAP містить атрибут, указаний вOVERLEAF_LDAP_IS_ADMIN_ATT, і його значення або збігається зOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE, або є масивом, що міститьOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; в іншому разіuser.isAdminвстановлюється вfalse. Якщо одну з цих змінних не задано, статус адміністратора встановлюється вtrueлише під час створення користувача-адміністратора в Launchpad.
- Якщо задано обидві змінні середовища, процес входу встановлює
OVERLEAF_LDAP_CONTACTS_FILTER- Фільтр для пошуку на сервері LDAP користувачів, яких буде завантажено в контакти. Заповнювач ‘{{userProperty}}’ у фільтрі замінюється значенням властивості, вказаної в
OVERLEAF_LDAP_CONTACTS_PROPERTY, від користувача LDAP, який ініціює пошук. Якщо не визначено, користувачі із сервера LDAP не завантажуються в контакти.
- Фільтр для пошуку на сервері LDAP користувачів, яких буде завантажено в контакти. Заповнювач ‘{{userProperty}}’ у фільтрі замінюється значенням властивості, вказаної в
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE- Визначає базовий DN, від якого починається пошук контактів. За замовчуванням
OVERLEAF_LDAP_SEARCH_BASE.
- Визначає базовий DN, від якого починається пошук контактів. За замовчуванням
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- Область пошуку може бути
base,oneабоsub(за замовчуванням).
- Область пошуку може бути
OVERLEAF_LDAP_CONTACTS_PROPERTY- Визначає властивість об’єкта користувача, яка замінить заповнювач ‘{{userProperty}}’ в
OVERLEAF_LDAP_CONTACTS_FILTER.
- Визначає властивість об’єкта користувача, яка замінить заповнювач ‘{{userProperty}}’ в
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Визначає значення
OVERLEAF_LDAP_CONTACTS_PROPERTY, якщо пошук ініціює користувач, що не належить до LDAP. Якщо цю змінну не визначено, отриманий фільтр нічому не відповідатиме. Значення*можна використовувати як шаблон підстановки.
- Визначає значення
Приклад
Приклад
gid. Користувачі, що не належать до LDAP, матимуть у своїх контактах усіх користувачів LDAP з UNIX gid=1000.Приклад файлу variables.env
Приклад файлу variables.env
Покрокова інструкція: goauthentik
Тут описано налаштування, протестоване з goauthentik. У прикладах використовується Base DNdc=example,dc=com; замініть його на свій.
Створіть обліковий запис для прив'язки
ldapservice, і натисніть Create:
Authentik: створення облікового запису для прив'язки
OVERLEAF_LDAP_BIND_CREDENTIALS:
Authentik: встановлення пароля облікового запису для прив'язки (тестовий екземпляр)
19 у …/#/identity/users/19. Він знадобиться на кроці 3.Створіть постачальника та застосунок
overleaf-ldap, і натисніть Next:
Authentik: назва та slug застосунку

Authentik: вибір постачальника LDAP

Authentik: режими прив'язки та пошуку постачальника LDAP
default-authentication-flow, а Base DN — на ваш Base DN, наприклад dc=example,dc=com:
Authentik: bind flow і Base DN постачальника LDAP
Дозвольте обліковому запису для прив'язки шукати в каталозі
ak-managed-role--user-<number>, потім увімкніть Search full LDAP directory:
Authentik: надання обліковому запису для прив'язки дозволу на пошук (тестовий екземпляр)

Authentik: дозволи постачальника LDAP (тестовий екземпляр)
Запустіть LDAP outpost

Authentik: запущений LDAP outpost (тестовий екземпляр)
Заповніть DN

Authentik: огляд постачальника LDAP (тестовий екземпляр)
- Bind DN показує обліковий запис, з яким ви ввійшли. Натомість використайте обліковий запис для прив’язки з кроку 1:
cn=ldapservice,ou=users,<Base DN>. - Search base показує Base DN. Використайте
ou=users,<Base DN>.
Перевірте пошук
dn::dn: зазвичай означає, що бракує дозволу з кроку 3.Зіставте адміністраторів (необов'язково)
memberOf у вигляді DN в ou=groups. Щоб члени групи Authentik Admins стали адміністраторами Overleaf:Протестований variables.env для goauthentik
Протестований variables.env для goauthentik

