Belajar Authelia - Password Reset & User Management
Episode 12 of 31

Belajar Authelia - Password Reset & User Management

Episode ini membahas pengelolaan pengguna Authelia: menyiapkan notifier email sebagai syarat reset password, alur verifikasi identitas berbasis kode sekali pakai, membuat hash password argon2id, hingga perintah CLI authelia storage user untuk daftar, ubah, dan nonaktifkan akun.

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

Pendahuluan

Di episode 11, kalian menghubungkan Authelia dengan Duo Security sebagai metode kedua berbasis push notification. Dari episode 9 sampai 11, kita terus menambahkan metode autentikasi — TOTP, WebAuthn, Duo. Tapi ada pertanyaan yang belum kita jawab: bagaimana mengelola orang-orang yang memakai semua metode itu? Episode ini menjawabnya: password reset & user management.

Setiap sistem autentikasi memiliki siklus hidup pengguna yang nyata: pengguna baru dibuat, password diubah karena lupa, akun harus dinonaktifkan saat seseorang keluar dari organisasi, hingga perangkat MFA yang harus di-reset. Hal ini tidak bisa diserahkan ke cara manual — mengedit file dengan tangan tanpa proses yang jelas — karena satu kesalahan kecil berarti celah keamanan atau pengguna terkunci selamanya.

Analogi yang tepat: Authelia adalah gedung dengan banyak ruangan, dan password adalah kunci kamar. Kalian sebagai administrator adalah pengelola gedung yang memegang kunci master. Episode ini tentang mengelola seluruh set kunci itu dengan aman dan terstruktur.

Notifier: Syarat Mutlak Reset Password

Sebelum membahas reset, satu hal wajib disiapkan: email. Authelia melakukan identity validation lewat email — verifikasi bahwa yang meminta reset memang pemilik akun. Tanpa notifier yang berfungsi, tombol lupa password di portal tidak akan pernah bisa menyelesaikan alurnya.

Authelia mendukung dua jenis notifier:

  • notifier.filesystem — menulis notifikasi ke sebuah file. Cocok untuk lab dan development karena bisa diperiksa langsung, bukan untuk produksi.
  • notifier.smtp — mengirim email asli melalui server SMTP, dengan dukungan TLS dan STARTTLS.
notifier:
  filesystem:
    filename: /config/notifications.txt

Perhatikan dua hal. Pertama, alamat SMTP ditulis sebagai URL (smtp://...), sehingga port dan skema enkripsi menjadi satu kesatuan yang jelas: 587 untuk STARTTLS, 465 untuk SMTPS. Kedua, Authelia modern menuntut koneksi SMTP terenkripsi — kode verifikasi adalah kredensial bernilai tinggi, tidak boleh lewat saluran terbuka.

Alur Reset Password: Verifikasi Identitas dengan Kode Email

Inilah alurnya ketika pengguna lupa password:

  1. Pengguna membuka portal Authelia dan memilih opsi lupa password.
  2. Authelia meminta username. Setelah username cocok dengan akun yang punya alamat email, Authelia mengirim kode verifikasi sekali pakai ke email terdaftar.
  3. Pengguna memasukkan kode tersebut beserta password baru.
  4. Authelia memvalidasi kode — termasuk masa berlakunya — lalu mengganti password dan mengirim konfirmasi.

Kode itu sekali pakai dan berbatas waktu, persis seperti OTP perbankan. Kenapa dirancang begitu? Karena tujuan utama reset bukan sekadar mengganti password, melainkan memverifikasi identitas: hanya pemilik alamat email yang terdaftar yang bisa menukar kredensial lama dengan yang baru. Inilah mengapa menjaga alamat email pengguna tetap benar di users_database.yml bukan sekadar kenyamanan — ia adalah kunci dari seluruh alur pemulihan.

Important

Di lingkungan produksi, selalu pakai notifier.smtp. Mode filesystem memang memudahkan debugging, tapi ia tidak mengirim apa pun ke inbox — jika pengguna nyata menekan lupa password, mereka tidak akan menerima kode apa pun.

Menambahkan Pengguna: Hash Password dengan Argon2id

Untuk authentication backend file, akun didefinisikan di users_database.yml. Satu aturan yang tidak bisa ditawar: file ini tidak pernah menyimpan password mentah. Yang disimpan adalah hash argon2id — algoritma pemenang Password Hashing Competition 2015 yang dirancang tahan brute-force karena biayanya bisa dinaikkan baik dari sisi CPU maupun memori.

Authelia menyediakan CLI untuk membuat hash:

Menghasilkan hash argon2id
authelia crypto hash generate argon2 --password 'password-kuat-2026'

Keluaran perintah di atas berupa string seperti $argon2id$v=19$m=65536,t=3,p=4$<salt>$<hash> — prefix $argon2id$ memberitahu Authelia algoritma dan parameter yang dipakai untuk memverifikasi di kemudian hari. Hash inilah yang ditempel ke file pengguna:

users_database.yml — akun baru
users:
  rina:
    disabled: false
    displayname: "Rina Wulandari"
    password: "$argon2id$v=19$m=65536,t=3,p=4$salt-rahasia$hash-panjang"
    email: rina@example.com
    groups:
      - users

Atribut yang bisa diatur per pengguna:

  • disabled — menandai akun nonaktif (dibahas lebih lanjut di bawah).
  • displayname — nama tampilan di portal.
  • email — wajib untuk reset password, notifikasi, dan enrollment MFA.
  • groups — dipakai access control rules untuk menetapkan izin berbasis grup.

Tip

Jangan membalik urutan: generate hash dulu, baru tempel ke YAML. Kebalikannya — menulis password mentah di file dan berharap di-hash otomatis — akan membuat Authelia gagal memuat file user database.

Mengelola Pengguna dari CLI

Selain mengedit file, Authelia punya perintah CLI untuk operasi pengguna. Semua perintah di bawah membaca konfigurasi melalui flag --config /config/configuration.yml (sesuaikan dengan lokasi kalian):

authelia storage user list --config /config/configuration.yml

Mengapa ada dua cara mengganti password? Karena keduanya melayani situasi yang berbeda. authelia storage user password mengganti password secara langsung — berguna saat kalian memang ingin menetapkan nilai tertentu, misalnya akun service. Sedangkan authelia storage user one-time tidak menetapkan password sama sekali; ia menghasilkan kode sekali pakai yang bisa diberikan kepada pengguna, lalu pengguna menukarkannya sendiri lewat portal. Ini pola yang jauh lebih sehat: administrator tidak pernah tahu password baru pengguna.

CLI juga bisa mengelola metode kedua. authelia storage user totp delete --username rina menghapus perangkat TOTP, dan authelia storage user webauthn delete --username rina menghapus kredensial WebAuthn — langkah penyelamat klasik saat pengguna mengganti ponsel atau kehilangan kunci keamanannya.

Menonaktifkan Pengguna

Saat akun tidak lagi dipakai — seseorang keluar dari organisasi, akun service tidak digunakan, atau akun dicurigai disusupi — jangan langsung menghapus akun. Nonaktifkan dulu:

users_database.yml — akun dinonaktifkan
users:
  rina:
    disabled: true
    displayname: "Rina Wulandari"
    password: "$argon2id$v=19$m=65536,t=3,p=4$salt-rahasia$hash-panjang"
    email: rina@example.com
    groups:
      - users

Satu perubahan (disabled: true) membuat Authelia menolak autentikasi pengguna itu seketika. Keuntungannya dibandingkan menghapus akun: atribut dan group membership tetap tersimpan, sehingga pemulihan (jika ternyata keputusan salah) cukup membalik nilainya menjadi false. Menghapus akun memang menghilangkan akses, tapi sekaligus menghilangkan semua jejak yang bisa kalian audit.

Kebijakan Password

Authelia menerapkan kebijakan password di portal — termasuk saat pengguna mengganti password sendiri. Aturan dasarnya: panjang minimum (8 karakter secara default), dan karena verifikasi dilakukan di sisi portal, kebijakan ini berlaku konsisten untuk alur login, perubahan password, maupun reset password.

Kebijakan ini terdengar sederhana, tapi dampaknya nyata: sebagian besar serangan terhadap autentikasi bermula dari password yang pendek atau dipakai ulang. Menegakkan panjang minimum memangkas permukaan serangan sebelum masuk ke lapisan MFA. Untuk kontrol yang lebih ketat — misalnya batas panjang min/max yang ditetapkan di backend LDAP atau Active Directory — kalian bisa menetapkannya di sisi backend tersebut.

Penutup

Episode ini menutup sisi pengelolaan pengguna: menyiapkan notifier sebagai syarat reset, memahami alur verifikasi identitas berbasis kode email sekali pakai, membuat hash argon2id dengan authelia crypto hash generate argon2, mengelola akun lewat perintah authelia storage user, hingga menonaktifkan pengguna dengan disabled: true.

Inti dari episode ini: kelola kredensial dengan cara yang tidak pernah memaparkan nilainya. Password disimpan sebagai hash argon2id, reset dibuktikan lewat kode verifikasi, dan administrator tidak perlu pernah tahu password pengguna.

Ini sekaligus menutup fase manajemen autentikasi. Mulai episode 13, kita masuk fase baru yang berbeda sifatnya: integrasi reverse proxy. Kita mulai dari proxy yang paling banyak dipakai di ekosistem self-hosted — NGINX — dan mengubahnya menjadi gerbang yang memeriksa setiap permintaan ke Authelia. Sampai jumpa!

Belajar Authelia - Password Reset & User Management | Belajar Authelia