Skip to main content
Fitur ini dikembangkan oleh yu-i-i/overleaf-cep. Di sini kami menyediakan beberapa dokumen untuk konfigurasi Anda.

Konfigurasi

Secara internal, modul OIDC Overleaf menggunakan pustaka passport-openidconnect. Jika Anda mengalami masalah saat mengonfigurasi OpenID Connect, ada baiknya membaca README untuk passport-openidconnect untuk memahami konfigurasi yang diharapkannya. Variabel lingkungan EXTERNAL_AUTH diperlukan untuk mengaktifkan modul autentikasi OIDC. Variabel lingkungan ini menentukan metode autentikasi eksternal mana yang diaktifkan. Nilai variabel ini berupa daftar. Jika daftar tersebut menyertakan oidc, autentikasi OIDC akan diaktifkan. Contoh: EXTERNAL_AUTH=ldap oidc Saat menggunakan metode autentikasi OIDC, pengguna diarahkan ke situs autentikasi Identity Provider (IdP). Jika IdP berhasil mengautentikasi pengguna, database pengguna Overleaf diperiksa untuk mencari catatan yang berisi kolom thirdPartyIdentifiers dengan struktur sebagai berikut:
externalUserId harus cocok dengan ID pengguna dalam profil yang dikembalikan oleh server IdP (lihat variabel lingkungan OVERLEAF_OIDC_USER_ID_FIELD), dan providerId harus cocok dengan ID penyedia OIDC (lihat OVERLEAF_OIDC_PROVIDER_ID). Jika tidak ditemukan catatan yang cocok, database akan dicari untuk menemukan pengguna dengan alamat email utama yang cocok dengan email di profil pengguna IdP:
  • Jika pengguna tersebut ditemukan, kolom thirdPartyIdentifiers akan diperbarui.
  • Jika tidak ditemukan pengguna yang cocok dan pembuatan akun JIT tidak dinonaktifkan, pengguna baru akan dibuat dengan alamat email dan thirdPartyIdentifiers dari profil IdP.
Dalam kedua kasus, pengguna dikatakan ‘tertaut’ dengan pengguna OIDC eksternal. Tautan pengguna dengan penyedia OIDC dapat dilepas di halaman /user/settings.

Menemukan nilai dengan dokumen discovery

Setiap OpenID Provider (OP) menerbitkan dokumen discovery di <issuer>/.well-known/openid-configuration. Salin nilai-nilainya dari dokumen tersebut alih-alih mengetiknya secara manual; satu karakter yang salah saja sudah cukup untuk menggagalkan login.
1

Temukan URL discovery

OP Anda menampilkannya di halaman client (provider) yang Anda buat untuk Overleaf. Di Authentik, buka Applications > Providers, pilih provider, lalu cari OpenID Configuration URL dan OpenID Configuration Issuer:

Authentik: URL discovery dan issuer sebuah provider (instans uji)

URL-nya biasanya terlihat seperti ini:
  • Keycloak: https://keycloak.example.com/realms/<realm>/.well-known/openid-configuration
  • Authentik: https://authentik.example.com/application/o/<application-slug>/.well-known/openid-configuration
2

Baca nilainya

Buka URL tersebut di browser, atau jalankan di server Overleaf:
Respons dari Authentik terlihat seperti ini:
Authentik juga mencantumkan URL-URL ini di bagian bawah halaman provider:

Authentik: endpoint sebuah provider (instans uji)

3

Salin ke variables.env

4

Pastikan Overleaf dapat menjangkau OP

Overleaf memanggil endpoint token dan userinfo dari dalam kontainernya, sehingga OP harus dapat dijangkau dari sana, bukan hanya dari browser Anda:
Perintah ini seharusnya menampilkan 200.
Salin issuer persis apa adanya, termasuk garis miring di akhir. Overleaf membandingkannya karakter demi karakter dengan issuer di ID token; perbedaan sekecil apa pun membuat setiap login OIDC gagal dengan:{"message":{"message":"ID token not issued by expected OpenID provider."}}Di Authentik, issuer adalah milik aplikasi (.../application/o/<application-slug>/). Issuer bukan alamat server Authentik, meskipun URL authorize, token, dan userinfo digunakan bersama oleh semua aplikasi.

Variabel Lingkungan

Nilai dari lima variabel wajib berikut dapat ditemukan menggunakan endpoint .well-known/openid-configuration dari OpenID Provider (OP) Anda, lihat di atas.
  • OVERLEAF_OIDC_ISSUER (wajib)
  • OVERLEAF_OIDC_AUTHORIZATION_URL (wajib)
  • OVERLEAF_OIDC_TOKEN_URL (wajib)
  • OVERLEAF_OIDC_USER_INFO_URL (wajib)
  • OVERLEAF_OIDC_LOGOUT_URL (wajib)
Nilai dari dua variabel wajib berikut akan diberikan oleh admin OP Anda
  • OVERLEAF_OIDC_CLIENT_ID (wajib)
  • OVERLEAF_OIDC_CLIENT_SECRET (wajib)
  • OVERLEAF_OIDC_SCOPE
    • Default: openid profile email
  • OVERLEAF_OIDC_PROVIDER_ID
    • ID bebas untuk OP, default-nya oidc.
  • OVERLEAF_OIDC_PROVIDER_NAME
    • Nama OP, digunakan di bagian Linked Accounts pada halaman /user/settings, default-nya OIDC Provider.
  • OVERLEAF_OIDC_IDENTITY_SERVICE_NAME
    • Nama tampilan untuk layanan identitas, digunakan di halaman login (default: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
  • OVERLEAF_OIDC_PROVIDER_DESCRIPTION
    • Deskripsi OP, digunakan di bagian Linked Accounts (default: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
  • OVERLEAF_OIDC_PROVIDER_INFO_LINK
    • URL Learn more dalam deskripsi OP; default: tidak ada tautan Learn more dalam deskripsi.
  • OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED
    • Jangan tampilkan OP di halaman /user/settings jika akun pengguna tidak tertaut dengan OP; default false.
  • OVERLEAF_OIDC_USER_ID_FIELD
    • Nilai atribut ini akan digunakan oleh Overleaf sebagai ID pengguna eksternal, default-nya id. Nilai lain yang masuk akal adalah email dan username (sesuai dengan klaim OIDC preferred_username).
  • OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS
    • Membatasi pembuatan akun Just-in-Time (JIT) untuk pengguna yang melakukan autentikasi melalui OIDC. Jika diatur ke daftar nama domain yang dipisahkan koma, akun baru hanya akan dibuat jika domain alamat email pengguna cocok dengan salah satu domain dalam daftar. Jika domain tidak cocok, admin harus membuat akun pengguna secara manual menggunakan alamat email pengguna OIDC, dengan kata sandi acak yang kuat atau, sebaiknya, tanpa kolom hashedPassword sama sekali. Nama domain dapat menyertakan wildcard *. di awal untuk mencocokkan subdomain.
      • Contoh: Untuk mengizinkan pembuatan akun JIT bagi pengguna dengan alamat email seperti name@example.com dan name@math.example.com:
        OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com
      • Contoh: Untuk menonaktifkan pembuatan akun JIT sepenuhnya:
        OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=
  • OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN
    • Jika diatur ke true, kolom first_name dan last_name pengguna akan diperbarui saat login, dan formulir detail pengguna di halaman /user/settings akan dinonaktifkan.
  • OVERLEAF_OIDC_IS_ADMIN_FIELD dan OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE
    • Ketika kedua variabel lingkungan diatur, proses login akan memperbarui user.isAdmin = true jika profil yang dikembalikan oleh OP berisi atribut yang ditentukan oleh OVERLEAF_OIDC_IS_ADMIN_FIELD dan nilainya cocok dengan OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE atau berupa array yang berisi OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE (misalnya klaim groups); jika tidak, user.isAdmin diatur ke false. Jika OVERLEAF_OIDC_IS_ADMIN_FIELD adalah email, nilai atribut emails[0].value digunakan untuk pemeriksaan kecocokan.
URL pengalihan (redirect URL) untuk OpenID Provider Anda adalah https://my-overleaf-instance.com/oidc/login/callback.
variables.env

Langkah demi langkah: goauthentik

Panduan ini menjelaskan penyiapan yang telah diuji dengan goauthentik. Ganti https://overleaf.example.com dengan OVERLEAF_SITE_URL Anda dan https://authentik.example.com dengan alamat Authentik Anda.
1

Buat provider

Di Authentik, buka Applications > Providers, klik New Provider, pilih OAuth2/OpenID Provider, lalu klik Next.
  • Client Type: Confidential.
  • Redirect URIs (di bawah Protocol settings): tambahkan https://overleaf.example.com/oidc/login/callback dengan mode pencocokan Strict.
  • Salin Client ID dan Client Secret sekarang ke OVERLEAF_OIDC_CLIENT_ID dan OVERLEAF_OIDC_CLIENT_SECRET.

Authentik: Client ID dan Client Secret provider baru

Authentik hanya menampilkan client secret saat Anda membuat provider. Setelah itu, formulir edit hanya menawarkan Modify, yang mengganti secret dengan yang baru.
2

Buat aplikasi

Buka Applications > Applications, buat aplikasi baru, beri nama dan slug, misalnya overleaf, lalu pilih provider-nya. Slug tersebut menjadi bagian dari issuer: https://authentik.example.com/application/o/overleaf/.
3

Salin URL

Ikuti Menemukan nilai dengan dokumen discovery di atas untuk mengisi kelima URL.
4

Petakan admin (opsional)

Authentik mengirimkan grup pengguna sebagai klaim groups, berupa array. Untuk menjadikan anggota grup Authentik Admins sebagai admin Overleaf:
Status admin diperbarui pada setiap login OIDC. Jika field atau nilainya salah, setiap admin yang login melalui OIDC akan kehilangan hak admin, termasuk admin yang dibuat di launchpad. Uji pemetaan ini terlebih dahulu dengan akun admin kedua.
variables.env
Terakhir diubah pada 6 Oktober 2026