Skip to main content
Fitur ini dikembangkan oleh yu-i-i/overleaf-cep. Di sini kami menyediakan beberapa dokumentasi untuk konfigurasi Anda.
Overleaf menggunakan pustaka passport-ldapauth, yang relatif sudah usang, sehingga kompatibilitas LDAP tidak dapat dijamin sepenuhnya. Dengan penyedia identitas LDAP tertentu (misalnya, https://goauthentik.io/), kegagalan login mungkin terjadi. Oleh karena itu, jika memungkinkan, disarankan untuk mengutamakan metode OAuth/SAML. Untuk goauthentik, ikuti Langkah demi langkah: goauthentik di bawah, yang telah diuji.

Apa itu LDAP

LDAP adalah protokol autentikasi yang digunakan untuk verifikasi identitas eksternal. Overleaf Server Pro menyediakan formulir login LDAP khusus di antarmuka web, terpisah dari metode autentikasi standar. Saat pengguna mengirimkan nama pengguna dan kata sandi LDAP mereka, backend Overleaf memverifikasi kredensial tersebut terhadap server LDAP yang dikonfigurasi, misalnya ldap://ldap:10389.

Contoh LDAP pada Server Pro

Konfigurasi

Secara internal, LDAP Overleaf menggunakan pustaka passport-ldapauth. Sebagian besar opsi konfigurasi ini diteruskan ke objek konfigurasi server yang digunakan untuk mengonfigurasi passport-ldapauth. Jika Anda mengalami masalah saat mengonfigurasi LDAP, ada baiknya membaca README passport-ldapauth untuk memahami konfigurasi yang diharapkannya. Variabel lingkungan EXTERNAL_AUTH diperlukan untuk mengaktifkan modul autentikasi LDAP. Variabel lingkungan ini menentukan metode autentikasi eksternal mana yang diaktifkan. Nilai variabel ini berupa daftar. Jika daftar tersebut mencakup ldap, autentikasi LDAP akan diaktifkan. Contoh: EXTERNAL_AUTH=ldap saml Berbeda dengan Overleaf CEP, dalam edisi ayaka-notes kami, autentikasi LDAP dibatasi sebagai metode autentikasi murni, yang tersedia di http://your-overleaf.com/ldap/login. Saat menggunakan metode autentikasi LDAP, pengguna memasukkan username dan password di formulir login, lalu sistem akan mencoba:
  1. Mencari pengguna LDAP di direktori LDAP menggunakan filter yang ditentukan oleh OVERLEAF_LDAP_SEARCH_FILTER lalu mengautentikasinya.
  2. Jika autentikasi berhasil, database pengguna Overleaf diperiksa untuk mencari pengguna dengan alamat email utama yang cocok dengan alamat email pengguna LDAP yang terautentikasi:
    • Jika pengguna yang cocok ditemukan, field hashedPassword untuk pengguna ini dihapus (jika ada). Hal ini memastikan bahwa pengguna hanya dapat login melalui autentikasi LDAP di masa mendatang.
    • Jika tidak ada pengguna yang cocok, pengguna Overleaf baru akan dibuat menggunakan email, nama depan, dan nama belakang yang diambil dari server LDAP.
Untuk pengguna yang login melalui LDAP, kami tidak menyimpan kata sandi ter-hash (atau menghapus yang sudah ada) di database mongo Overleaf.

Variabel Lingkungan

  • OVERLEAF_LDAP_URL (wajib)
    • URL server LDAP.
      • Contoh: ldaps://ldap.example.com:636 (LDAP melalui SSL)
      • Contoh: ldap://ldap.example.com:389 (tidak terenkripsi atau STARTTLS, jika dikonfigurasi).
  • OVERLEAF_LDAP_IDENTITY_SERVICE_NAME
    • Nama tampilan untuk layanan identitas LDAP, digunakan di halaman login.
    • Default-nya Log in with LDAP Provider.
  • OVERLEAF_LDAP_EMAIL_ATT
    • Atribut email yang dikembalikan oleh server LDAP, default mail. Setiap pengguna LDAP harus memiliki setidaknya satu alamat email. Jika beberapa alamat diberikan, hanya alamat pertama yang akan digunakan.
  • OVERLEAF_LDAP_FIRST_NAME_ATT
    • Nama properti yang menyimpan nama depan pengguna yang digunakan dalam aplikasi, biasanya givenName.
  • OVERLEAF_LDAP_LAST_NAME_ATT
    • Nama properti yang menyimpan nama keluarga pengguna yang digunakan dalam aplikasi, biasanya sn.
  • OVERLEAF_LDAP_NAME_ATT
    • Nama properti yang menyimpan nama lengkap pengguna, biasanya cn. Jika salah satu dari dua variabel sebelumnya tidak didefinisikan, nama depan dan/atau nama belakang pengguna diambil dari variabel ini. Jika tidak, variabel ini tidak digunakan.
  • OVERLEAF_LDAP_PLACEHOLDER
    • Placeholder untuk formulir login, default-nya Username.
  • OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN
    • Jika diatur ke true, field first_name dan last_name pengguna LDAP akan diperbarui saat login, dan formulir detail pengguna di halaman /user/settings dinonaktifkan untuk pengguna LDAP. Jika tidak, detail hanya akan diambil saat login pertama.
  • OVERLEAF_LDAP_BIND_DN
    • Distinguished name dari pengguna LDAP yang akan digunakan untuk koneksi LDAP (pengguna ini harus dapat mencari/menampilkan daftar akun di server LDAP), misalnya cn=ldap_reader,dc=example,dc=com. Jika tidak didefinisikan, binding anonim akan digunakan.
  • OVERLEAF_LDAP_BIND_CREDENTIALS
    • Kata sandi untuk OVERLEAF_LDAP_BIND_DN.
  • OVERLEAF_LDAP_BIND_PROPERTY
    • Properti pengguna yang digunakan untuk bind terhadap klien, default-nya dn.
  • OVERLEAF_LDAP_SEARCH_BASE (wajib)
    • Base DN tempat memulai pencarian pengguna. Misalnya, ou=people,dc=example,dc=com.
  • OVERLEAF_LDAP_SEARCH_FILTER
    • Filter pencarian LDAP untuk menemukan pengguna. Gunakan literal ‘{{username}}’ agar nama pengguna yang diberikan disisipkan ke dalam pencarian LDAP.
      • Contoh: (|(uid={{username}})(mail={{username}})) (pengguna dapat login dengan email atau nama login).
      • Contoh: (sAMAccountName={{username}}) (Active Directory).
  • OVERLEAF_LDAP_SEARCH_SCOPE
    • Cakupan pencarian dapat berupa base, one, atau sub (default).
  • OVERLEAF_LDAP_SEARCH_ATTRIBUTES
    • Array JSON berisi atribut yang akan diambil dari server LDAP, misalnya ["uid", "mail", "givenName", "sn"]. Secara default, semua atribut diambil.
  • OVERLEAF_LDAP_STARTTLS
    • Jika true, LDAP melalui TLS akan digunakan.
  • OVERLEAF_LDAP_TLS_OPTS_CA_PATH
    • Path ke file yang berisi sertifikat CA yang digunakan untuk memverifikasi sertifikat SSL/TLS server LDAP. Jika ada beberapa sertifikat, nilainya dapat berupa array JSON berisi path ke sertifikat-sertifikat tersebut. File harus dapat diakses oleh container docker.
      • Contoh (satu sertifikat): /var/lib/overleaf/certs/ldap_ca_cert.pem
      • Contoh (beberapa sertifikat): ["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
  • OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH
    • Jika true, sertifikat server diverifikasi terhadap daftar CA yang diberikan.
  • OVERLEAF_LDAP_CACHE
    • Jika true, hingga 100 kredensial sekaligus akan di-cache selama 5 menit.
  • OVERLEAF_LDAP_TIMEOUT
    • Berapa lama klien membiarkan operasi berjalan sebelum timeout, dalam ms (Default: Infinity).
  • OVERLEAF_LDAP_CONNECT_TIMEOUT
    • Berapa lama klien harus menunggu sebelum timeout pada koneksi TCP, dalam ms (Default: default OS).
  • OVERLEAF_LDAP_IS_ADMIN_ATT dan OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE
    • Jika kedua variabel lingkungan ini diatur, proses login akan memperbarui user.isAdmin = true jika profil LDAP berisi atribut yang ditentukan oleh OVERLEAF_LDAP_IS_ADMIN_ATT dan nilainya cocok dengan OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE atau berupa array yang berisi OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; jika tidak, user.isAdmin diatur ke false. Jika salah satu variabel ini tidak diatur, status admin hanya diatur ke true saat pembuatan pengguna admin di Launchpad.
Lima variabel berikut digunakan untuk mengonfigurasi cara pengambilan kontak pengguna dari server LDAP.
  • OVERLEAF_LDAP_CONTACTS_FILTER
    • Filter yang digunakan untuk mencari pengguna di server LDAP yang akan dimuat ke dalam kontak. Placeholder ‘{{userProperty}}’ di dalam filter diganti dengan nilai properti yang ditentukan oleh OVERLEAF_LDAP_CONTACTS_PROPERTY dari pengguna LDAP yang memulai pencarian. Jika tidak didefinisikan, tidak ada pengguna yang diambil dari server LDAP ke dalam kontak.
  • OVERLEAF_LDAP_CONTACTS_SEARCH_BASE
    • Menentukan base DN tempat memulai pencarian kontak. Default-nya OVERLEAF_LDAP_SEARCH_BASE.
  • OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE
    • Cakupan pencarian dapat berupa base, one, atau sub (default).
  • OVERLEAF_LDAP_CONTACTS_PROPERTY
    • Menentukan properti objek pengguna yang akan menggantikan placeholder ‘{{userProperty}}’ di OVERLEAF_LDAP_CONTACTS_FILTER.
  • OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE
    • Menentukan nilai OVERLEAF_LDAP_CONTACTS_PROPERTY jika pencarian dimulai oleh pengguna non-LDAP. Jika variabel ini tidak didefinisikan, filter yang dihasilkan tidak akan cocok dengan apa pun. Nilai * dapat digunakan sebagai wildcard.
Contoh di atas akan memuat ke dalam kontak pengguna LDAP saat ini semua pengguna LDAP yang memiliki UNIX gid yang sama. Pengguna non-LDAP akan memiliki semua pengguna LDAP dengan UNIX gid=1000 di dalam kontak mereka.

Langkah demi langkah: goauthentik

Panduan ini menjelaskan penyiapan yang telah diuji dengan goauthentik. Contoh-contoh menggunakan Base DN dc=example,dc=com; ganti dengan milik Anda.
1

Buat akun bind

Overleaf terlebih dahulu masuk ke direktori dengan akunnya sendiri untuk menemukan pengguna. Di Authentik, buka Directory > Users, klik New User, pilih Internal User, lalu klik Next. Masukkan nama pengguna, misalnya ldapservice, lalu klik Create:

Authentik: membuat akun bind

Buka pengguna baru tersebut dan klik Set password. Kata sandi ini dimasukkan ke OVERLEAF_LDAP_BIND_CREDENTIALS:

Authentik: mengatur kata sandi akun bind (instans uji)

Catat nomor pengguna di bilah alamat, misalnya 19 pada …/#/identity/users/19. Anda memerlukannya di langkah 3.
2

Buat provider dan aplikasi

Buka Applications > Applications dan klik New Application. Wizard akan membuat aplikasi beserta provider-nya sekaligus.1. Beri aplikasi nama dan slug, misalnya overleaf-ldap, lalu klik Next:

Authentik: nama dan slug aplikasi

2. Pilih LDAP Provider dan klik Next:

Authentik: memilih provider LDAP

3. Atur Bind Mode ke Direct binding dan Search Mode ke Direct querying:

Authentik: mode bind dan mode pencarian provider LDAP

4. Di bagian bawah, atur Bind Flow ke default-authentication-flow dan Base DN ke Base DN Anda, misalnya dc=example,dc=com:

Authentik: bind flow dan Base DN provider LDAP

5. Klik Next hingga halaman terakhir dan kirimkan aplikasi.
3

Izinkan akun bind mencari di direktori

Tanpa izin ini, akun bind hanya dapat melihat dirinya sendiri, pencarian tidak menemukan pengguna apa pun, dan setiap login LDAP gagal.Buka provider, masuk ke Permissions, lalu klik Assign Role Object Permission. Pada Role, ketik nomor dari langkah 1 dan pilih ak-managed-role--user-<number>, lalu aktifkan Search full LDAP directory:

Authentik: memberikan izin pencarian kepada akun bind (instans uji)

Role tersebut kemudian menampilkan tanda centang di bawah Search full LDAP directory:

Authentik: izin pada provider LDAP (instans uji)

4

Jalankan outpost LDAP

Authentik melayani LDAP melalui outpost, yaitu kontainer terpisah. Buka Applications > Outposts, buat outpost bertipe LDAP dengan provider Anda, lalu deploy sesuai petunjuk Authentik. Outpost mendengarkan di port 389 pada host tempat ia berjalan. Saat sudah terhubung, outpost menampilkan tanda centang hijau:

Authentik: outpost LDAP yang sedang berjalan (instans uji)

5

Isi DN

Halaman provider menampilkan Base DN dan sebuah contoh di bawah How to connect:

Authentik: ikhtisar provider LDAP (instans uji)

Jangan menyalin nilai contoh apa adanya:
  • Bind DN menampilkan akun yang sedang Anda gunakan untuk login. Gunakan akun bind dari langkah 1 sebagai gantinya: cn=ldapservice,ou=users,<Base DN>.
  • Search base menampilkan Base DN. Gunakan ou=users,<Base DN>.
Authentik menyimpan grup dengan nama setiap pengguna di bawah ou=virtual-groups. Mencari (cn=alice) di seluruh Base DN akan menemukan cn=alice,ou=users,… sekaligus cn=alice,ou=virtual-groups,…, dan Overleaf menolak login yang cocok dengan lebih dari satu entri. Tetap gunakan search base ou=users,<Base DN>.
6

Periksa pencarian

Sebelum menjalankan Overleaf, jalankan pencarian yang akan dilakukannya. Hasilnya harus menampilkan tepat satu dn::
Jika tidak ada dn: sama sekali, biasanya izin dari langkah 3 belum diberikan.
7

Petakan admin (opsional)

Grup milik pengguna ada di memberOf, berupa DN di bawah ou=groups. Untuk menjadikan anggota grup Authentik Admins sebagai admin Overleaf:
Status admin diperbarui pada setiap login LDAP. Jika atribut atau nilainya salah, setiap admin yang login melalui LDAP akan kehilangan hak admin. Uji pemetaan ini terlebih dahulu dengan akun admin kedua.
variables.env
Terakhir diubah pada 6 Oktober 2026