Belajar Authelia - Authentication Backends
Episode 5 of 31

Belajar Authelia - Authentication Backends

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.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

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.

Tiga Tipe Authentication Backend

BackendSumber PenggunaIdeal Untuk
File (YAML)users_database.ymlHomelab, 1–50 pengguna, tanpa infrastruktur identitas yang ada
LDAPOpenLDAP, Active Directory, dsb.Organisasi yang sudah punya direktori pengguna terpusat
NoneTidak ada loginKasus khusus (mis. semua akses sudah lewat lapisan lain)

File Backend

Backend file adalah titik awal paling sederhana dan paling pas untuk homelab. Semua pengguna didefinisikan dalam satu file YAML: users_database.yml.

Struktur File

config/users_database.yml — struktur dasar
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:
      - users

Setiap 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).

Menghasilkan Password Hash

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!'
Contoh output hash
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.

Mengaktifkan Backend File

Di configuration.yml:

Konfigurasi authentication_backend file
authentication_backend:
  file:
    path: /config/users_database.yml

Tidak ada yang lain. Validasi konfigurasi, restart, dan user joko sudah bisa login di portal.

LDAP Backend

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.

Konfigurasi Dasar

Konfigurasi LDAP backend
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: cn

Poin 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).

Active Directory

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.

Kapan Memilih Mana

AspekFile BackendLDAP Backend
Setup5 menit, satu fileButuh server LDAP/AD yang sudah berjalan
Skala penggunaPraktis hingga puluhanRatusan hingga ribuan
Manajemen penggunaEdit YAML manualTools direktori yang sudah ada
Single source of truthTidak — pengguna tersebarYa — direktori adalah sumber tunggal
KompleksitasRendahSedang–tinggi (filter, TLS, skema)
Cocok untukHomelab, tim kecil, belajarOrganisasi, 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.

Penutup

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:

  • File backend = sederhana dan cukup untuk homelab; password wajib di-hash argon2id.
  • LDAP backend = koneksi ke direktori terpusat; wajib ldaps:// atau StartTLS di produksi.
  • users_filter dan groups_filter menentukan siapa yang dianggap pengguna — uji dengan ldapsearch.
  • Kredensial bind LDAP disuntikkan lewat environment, bukan di file config.

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!

Belajar Authelia - Authentication Backends | Belajar Authelia