Memilih dan mengonfigurasi authentication backend Authelia: file backend dengan users_database.yml dan password argon2id untuk homelab, serta LDAP backend untuk organisasi yang sudah punya OpenLDAP atau Active Directory.

Di episode 4 kalian sudah mengenal authentication_backend sebagai salah satu bagian configuration.yml. Episode 5 ini mengangkatnya ke permukaan: di sinilah Authelia mencari jawaban atas pertanyaan paling fundamental — apakah username dan password yang diketik pengguna benar-benar milik pengguna itu?
Authelia menawarkan tiga pilihan: file backend (database pengguna berbasis YAML), LDAP backend (terhubung ke OpenLDAP atau Active Directory), dan mode tanpa autentikasi. Pilihan ini menentukan bagaimana kalian mengelola pengguna, dan episode ini akan membedah ketiganya sampai kalian bisa memutuskan mana yang tepat untuk kebutuhan kalian.
| Backend | Sumber Pengguna | Ideal Untuk |
|---|---|---|
| File (YAML) | users_database.yml | Homelab, 1–50 pengguna, tanpa infrastruktur identitas yang ada |
| LDAP | OpenLDAP, Active Directory, dsb. | Organisasi yang sudah punya direktori pengguna terpusat |
| None | Tidak ada login | Kasus khusus (mis. semua akses sudah lewat lapisan lain) |
Backend file adalah titik awal paling sederhana dan paling pas untuk homelab. Semua pengguna didefinisikan dalam satu file YAML: users_database.yml.
users:
joko:
password: "$argon2id$v=19$m=65536,t=3,p=4$...salt...$...hash..."
displayname: "Joko Susilo"
email: joko@example.com
groups:
- admins
- users
sari:
password: "$argon2id$v=19$m=65536,t=3,p=4$...salt...$...hash..."
displayname: "Sari Wulandari"
email: sari@example.com
groups:
- usersSetiap user punya:
password — hash argon2id (bukan teks biasa, bukan hash MD5). Argon2id tahan terhadap serangan GPU karena butuh memori besar dan waktu komputasi nyata.displayname — nama tampilan, muncul di portal.email — dipakai untuk notifikasi dan reset password.groups — keanggotaan grup, dipakai dalam access control rules (contoh: subject dengan group:admins).Kalian tidak pernah menulis password plaintext di file ini. Hash argon2id dihasilkan dengan perintah authelia crypto hash generate:
docker run --rm authelia/authelia:latest \
authelia crypto hash generate argon2 --password 'PasswordKuat123!'Password hash: $argon2id$v=19$m=65536,t=3,p=4$...$...Tempel output tersebut ke kolom password di users_database.yml. Setiap kali mengganti password, generate hash baru dan update file — lalu validasi dan restart.
Warning
Jangan pernah menyimpan password plaintext, hash MD5/SHA1, atau bcrypt biasa untuk backend file — Authelia secara tegas mendukung argon2id dan akan menolak format yang tidak dikenal. Arsip password plaintext di file adalah peta harta karun bagi penyerang.
Di configuration.yml:
authentication_backend:
file:
path: /config/users_database.ymlTidak ada yang lain. Validasi konfigurasi, restart, dan user joko sudah bisa login di portal.
Ketika pengguna sudah hidup di direktori terpusat — OpenLDAP, FreeIPA, atau Active Directory — kalian tidak ingin menggandakan daftar pengguna di file YAML. LDAP backend menghubungkan Authelia langsung ke direktori tersebut.
authentication_backend:
ldap:
address: ldaps://ldap.example.com
base_dn: dc=example,dc=com
user: cn=admin,dc=example,dc=com
password: dari-environment-variable
additional_users_dn: ou=users
users_filter: (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person))
additional_groups_dn: ou=groups
groups_filter: (&(member={dn})(objectClass=groupOfNames))
attributes:
username: uid
display_name: displayName
mail: mail
group_name: cnPoin penting:
address — gunakan ldaps:// (LDAP over TLS) untuk enkripsi, atau ldap:// dengan StartTLS.base_dn — titik awal pencarian di direktori, biasanya kebalikan dari domain (dc=example,dc=com).user + password — kredensial "akun sistem" yang berhak mencari pengguna; jangan pakai admin utama, dan password di-inject lewat environment (AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PASSWORD).users_filter / groups_filter — pola pencarian siapa yang dianggap pengguna dan grup. Filter ini menentukan siapa yang boleh login dan grup apa yang dikenali.attributes — pemetaan dari atribut LDAP ke atribut Authelia (username, display_name, mail, group_name).Untuk Active Directory, filter umumnya memakai sAMAccountName sebagai username dan skema grup groupOfNames yang sudah dikenal AD. Authelia menyediakan filter default yang ramah AD; yang wajib dipastikan adalah atribut username mengarah ke sAMAccountName dan base DN diarahkan ke domain AD kalian. Episode ini cukup untuk mengenal konsep — detail lebih dalam (nested groups, UPN) bisa digali dari dokumentasi resmi saat kalian berhadapan dengan AD nyata.
Tip
Filter LDAP adalah topik yang paling sering membuat orang menyerah di tengah jalan. Mulailah dari filter default yang disediakan dokumentasi Authelia, lalu sesuaikan sedikit demi sedikit sambil menguji dengan ldapsearch dari host — jangan menebak-nebak tanpa melihat data nyata direktori.
| Aspek | File Backend | LDAP Backend |
|---|---|---|
| Setup | 5 menit, satu file | Butuh server LDAP/AD yang sudah berjalan |
| Skala pengguna | Praktis hingga puluhan | Ratusan hingga ribuan |
| Manajemen pengguna | Edit YAML manual | Tools direktori yang sudah ada |
| Single source of truth | Tidak — pengguna tersebar | Ya — direktori adalah sumber tunggal |
| Kompleksitas | Rendah | Sedang–tinggi (filter, TLS, skema) |
| Cocok untuk | Homelab, tim kecil, belajar | Organisasi, perusahaan, kebutuhan kepatuhan |
Aturan praktisnya: mulai dari file backend, kecuali kalian sudah punya direktori LDAP/AD yang hidup. Migrasi dari file ke LDAP nanti dimungkinkan, tapi dimulai dari file membuat kalian memahami konsep Authelia tanpa distraksi server direktori.
Pada episode 5 ini kalian telah memahami tiga pilihan authentication backend: file backend dengan users_database.yml, hash argon2id, dan perintah authelia crypto hash generate argon2; LDAP backend dengan konfigurasi base_dn, filter pengguna/grup, dan pemetaan atribut; serta mode tanpa autentikasi untuk kasus khusus. Kalian juga tahu kapan memilih yang mana.
Poin yang harus kalian bawa:
ldaps:// atau StartTLS di produksi.users_filter dan groups_filter menentukan siapa yang dianggap pengguna — uji dengan ldapsearch.Di episode 6 selanjutnya kita akan menggabungkan semua bahan: access control rules — bagaimana Authelia memutuskan siapa boleh masuk ke aplikasi mana, dengan policy bypass, one_factor, two_factor, dan deny, lengkap dengan pola domain, path, user, grup, dan jaringan. Di sinilah Authelia benar-benar mulai "berjaga". Sampai jumpa di episode 6!