Menguji login passkey dan pemulihan akun aplikasi
Periksa login yang sah sekaligus keadaan gagal: kredensial milik akun lain, challenge lama, pencabutan dan perangkat tanpa passkey. Pisahkan bukti verifikasi WebAuthn dari bukti pemulihan identitas.
Di halaman ini
Apa yang harus dibuktikan pada login passkey?
Login yang sah harus berhasil, sementara passkey yang sudah dicabut atau tidak terkait dengan akun harus ditolak. Tombol “masuk dengan passkey” yang berfungsi belum menjawab apa yang terjadi ketika perangkat hilang, pengguna mengganti perangkat atau meminta pemulihan akun.
Passkey memakai pasangan kunci. Aplikasi menyimpan kunci publik; authenticator, yaitu komponen yang membuat dan memakai kredensial, mengelola kunci privat. WebAuthn menghubungkan proses itu dengan browser dan aplikasi. Artikel ini untuk pengembang atau penguji pada sistem yang telah diizinkan, bukan panduan mengakses akun orang lain.
Tetapkan aturan sebelum menjalankan tes
Tulis domain yang menjadi RP ID, alamat asal yang diterima (origin), akun pemilik kredensial dan tindakan yang memerlukan autentikasi ulang. Challenge adalah nilai acak dari server untuk satu percobaan; server perlu menghubungkannya dengan operasi dan konteks akun yang benar.
Bedakan interaksi pengguna dengan verifikasi pengguna. Flag user presence menunjukkan interaksi; user verification menunjukkan authenticator memeriksa pengguna secara lokal, misalnya memakai PIN. Jangan menyebut proses sebagai MFA hanya karena perangkat mempunyai sensor biometrik.
Tetapkan pula siapa yang boleh menambah atau mencabut passkey. Pengguna yang kehilangan satu perangkat sebaiknya masih mempunyai jalur yang disepakati, tanpa membuka penambahan kredensial hanya berdasarkan alamat email.
Contoh yang dijalankan: akun A dan dua authenticator
Unduh source dan hasil lab keamanan aplikasi 1.0. README memuat perintah, versi pustaka dan batas. Jalankan pada komputer uji dengan Node 24 dan Chrome:
npm ci --ignore-scripts
node passkey-lab.mjs
Lab dijalankan 2 Oktober 2026, Node 24.21.0, Chrome 154.0.8037.93, verifier @simplewebauthn/server 14.0.3. Browser memakai authenticator CTAP2 virtual melalui alat otomasi Chrome. Ini menjalankan API WebAuthn dan verifikasi tanda tangan, tanpa memakai passkey pribadi, sidik jari, perangkat fisik atau sinkronisasi akun.
Server halaman hanya mendengar di loopback; localhost dipakai untuk konteks uji browser. Jangan menjadikan HTTP lab sebagai konfigurasi website publik. Halaman produksi dan pengelolaan kredensial memerlukan HTTPS serta perlindungan aplikasi yang sesuai.
| Kasus yang dijalankan | Hasil lab |
|---|---|
| Registrasi dan login akun A | Diterima setelah verifikasi respons. |
| Kredensial A diminta untuk akun B | Ditolak oleh pemeriksaan pemilik akun. |
| Origin atau RP ID harapan berbeda | Ditolak oleh verifier. Ini tes verifikasi server, bukan kunjungan ke situs phishing. |
| Byte tanda tangan diubah | Ditolak; isi respons yang dapat diuraikan belum berarti sah. |
| Challenge kedaluwarsa atau dipakai lagi | Ditolak oleh penjagaan challenge pada fixture. |
| Kredensial dicabut | Mode bad masih menerima respons yang sah secara kriptografi; fixed menolak status kredensial tidak aktif. |
| Uji ulang login yang masih aktif | Diterima. Penolakan tidak mematikan semua login. |
| Authenticator baru tanpa kredensial | Tidak menghasilkan kredensial yang diminta. |
Pencabutan di server tidak menghapus salinan dari perangkat. Lab sengaja mempertahankan kredensial di authenticator untuk menunjukkan perbedaan itu. Penolakan challenge ulang dicatat terpisah dari penghitung tanda tangan; hasil tersebut bukan pengujian lengkap semua kemungkinan counter pada passkey tersinkron.
Uji pemulihan tanpa menjadikannya jalan pintas
Bagian pemulihan dalam lab adalah model persetujuan buatan, bukan layanan email atau pemeriksaan identitas manusia. Token buatan hanya diterima jika persetujuan sudah diberikan, akun cocok, masa berlaku belum habis dan token belum dipakai. Token tanpa persetujuan, untuk akun lain, kedaluwarsa atau digunakan ulang ditolak. Sesudah pemulihan yang disetujui, registrasi dan login dengan kredensial baru berhasil.
Pada produk nyata, tambahkan kasus orang yang tidak dapat membuktikan kepemilikan akun, petugas bantuan yang tidak berwenang, pembatalan permintaan dan pemberitahuan perubahan kredensial. Catat siapa yang menyetujui, dasar keputusan dan akses yang diberikan. Rincian proses tetap di panduan pemulihan akun dan MFA.
Bukti apa yang disimpan?
Gunakan catatan verifikasi aplikasi: build, browser, jenis authenticator, kasus, harapan, hasil dan lokasi bukti. Paket menyimpan 19 hasil dengan penanda buatan; tidak mengekspor kunci privat atau token aktif. Jangan menyalin rahasia dari akun nyata ke laporan.
Verifikasi passkey dan pencabutan kredensial belum membuktikan sesi yang sudah terbit berhenti. Uji sesi lama secara terpisah melalui panduan sesi dan token.
Apa yang belum diperiksa?
Lab belum mencakup perangkat fisik, sinkronisasi penyedia kredensial, autentikasi lintas perangkat, browser lain, pembatalan UI, native app, kebijakan attestation, expiry registrasi atau pembuktian identitas melalui bantuan pelanggan. User verification diminta dan diperiksa untuk respons sah; kegagalan PIN/biometrik dan kasus flag UV tidak ada belum dijalankan.
Ini contoh verifikasi terbatas berdasarkan WebAuthn Level 3, bukan sertifikasi FIDO, laporan pentest produk atau pemenuhan seluruh ASVS. Gunakan rencana ASVS untuk mencatat bagian yang masih belum diperiksa.
Rujukan WebAuthn diterbitkan W3C; panduan penerapan diringkas dari OWASP dengan perubahan bahasa. Bagian adaptasi OWASP mengikuti CC BY-SA 4.0; kode dan hasil contoh orisinal Kompli memakai CC0 1.0.
Sumber rujukan
- W3C WebAuthn Level 3 — Recommendation 25 Agustus 2026 ↗W3C; operasi registrasi/verifikasi serta batas account recovery · Recommendation 25 Agustus 2026, §7.1/7.2: verifikasi registrasi dan assertion; §13.4.6: kehilangan kredensial.
- OWASP Passkey Security Cheat Sheet ↗OWASP Foundation; verifikasi server, lifecycle dan recovery · Registrasi pada akun yang tepat, verifikasi server, pencabutan serta pemulihan.
Baca naskah lengkap untuk melihat syarat dan pengecualiannya. Sesuaikan dengan layanan dan bidang usaha Anda.
Perlu membahas kebutuhan tim Anda?
Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.
Konsultasikan kebutuhan Anda