Memahami WebAuthn/FIDO2 di Authelia: konsep passkey dan authenticator, kredensial yang terikat pada domain untuk menangkal phishing, konfigurasi webauthn dengan display_name dan attestation, hingga enrollment YubiKey serta perbandingannya dengan TOTP.

Di episode 9, TOTP menambahkan lapisan kedua yang melindungi password yang bocor. Namun TOTP masih punya satu celah klasik: kode 6 digit bisa diketik di situs phishing yang menyalin halaman login Authelia. Penyerang tidak mencuri secret — cukup menipu korban memasukkan kode di tempat yang salah.
WebAuthn menutup celah itu dari akar. Di episode ini kalian akan memahami standar W3C yang menjadi dasar FIDO2: mengapa kredensialnya terikat pada domain asli, bagaimana Authelia mengimplementasikannya, cara mengonfigurasi perilaku WebAuthn, hingga proses enrollment YubiKey dan pertimbangan memilih WebAuthn atau TOTP.
WebAuthn adalah standar W3C yang memungkinkan autentikasi menggunakan authenticator — perangkat yang menyimpan kunci kriptografi pribadi. Ada dua jenis authenticator:
Saat enrollment, authenticator membuat sepasang kunci: private key yang tidak pernah meninggalkan perangkat, dan public key yang dikirim ke Authelia. Private key tidak bisa diekstrak — penyerang yang mencuri database Authelia hanya mendapat public key yang tidak berguna tanpa perangkat fisik.
Keunggulan utamanya adalah origin binding. Setiap autentikasi menyertakan tanda tangan atas informasi asal situs (domain dan skema). Tanda tangan dari domain auth.example.com tidak akan pernah cocok untuk domain phishing auth-example.net. Di sinilah letak perbedaan fundamentalnya: TOTP memverifikasi "kalian tahu kode yang sama", WebAuthn memverifikasi "kalian memegang kunci yang sah untuk domain ini".
Authelia menampilkan WebAuthn sebagai salah satu metode kedua di portal. Alur enrollmentnya:
Berkat SSO, satu kali enrollment berlaku untuk semua aplikasi yang dilindungi Authelia — pengguna tidak perlu mendaftarkan YubiKey di setiap layanan. Authelia juga mendukung enable_passkey_login, yang memungkinkan login tanpa password sama sekali menggunakan passkey (passwordless), mengubah peran WebAuthn dari sekadar faktor kedua menjadi pengganti faktor pertama.
Perilaku WebAuthn dikendalikan lewat section webauthn:
webauthn:
display_name: "Authelia"
attestation_conveyance_preference: "indirect"
timeout: "60 seconds"
selection_criteria:
discoverability: "preferred"
user_verification: "preferred"display_name: nama yang dikirim ke browser dan bisa ditampilkan saat dialog WebAuthn.attestation_conveyance_preference: seberapa banyak data tentang authenticator yang dikumpulkan. none meminimalkan data, indirect menyamarkan identitas perangkat, direct meminta attestation statement langsung dari authenticator termasuk AAGUID (model perangkat). Default indirect adalah keseimbangan privasi dan verifikasi.timeout: batas waktu interaksi WebAuthn, ditulis dalam sintaks durasi seperti 60 seconds.selection_criteria: preferensi attachment, discoverability, dan user verification saat enrollment.Tip
Untuk pengaturan yang lebih ketat di organisasi yang peduli keamanan, aktifkan attestation_conveyance_preference: "direct" dan pertimbangkan filter AAGUID: whitelist model perangkat yang boleh didaftarkan. Ini mencegah pengguna memakai authenticator yang tidak disetujui.
YubiKey adalah roaming authenticator paling populer. Proses enrollment di Authelia:
Beberapa YubiKey mendukung banyak slot, sehingga kalian bisa mendaftarkan satu kunci untuk beberapa tujuan. Saat authenticator hilang atau dicurigai kompromi, hapus dari daftar lewat portal atau CLI:
authelia storage user webauthn list
authelia storage user webauthn delete john --identifier "yubikey-1"Prinsip yang sama dari TOTP berlaku: jangan pernah bergantung pada satu authenticator saja. Strategi yang sehat:
Kedua metode bisa hidup berdampingan, tetapi memahami perbedaannya membantu kalian memutuskan yang mana yang dijadikan utama:
Important
Pola terbaik di produksi: jadikan WebAuthn sebagai metode kedua utama untuk layanan sensitif karena ketahanan phishinya, tetapi biarkan TOTP tetap terdaftar sebagai fallback. Kombinasi ini menjaga keamanan tinggi tanpa memenjarakan pengguna saat authenticator hilang.
Poin kunci episode ini:
display_name, attestation_conveyance_preference, dan timeout.Semua metode kedua sejauh ini berjalan di perangkat kalian: aplikasi authenticator atau kunci fisik. Di episode 11, ada satu metode lagi yang memindahkan keputusan ke layanan pihak ketiga — Duo Push. Kalian akan mengintegrasikan Authelia dengan Duo Security, memasang API key, dan memahami kapan push notification lebih baik serta kapan harus memakai fallback.