# Menguji login passkey dan pemulihan akun aplikasi

Sumber diperiksa. Metode: https://kompli.id/metodologi/.

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.

URL kanonis: https://kompli.id/panduan/keamanan/pengujian-login-passkey/
Sumber diakses: 2026-10-02
Diperbarui: 2026-10-02
Penulis: Kompli
Sumber diperiksa: 2026-10-02


## 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](/unduhan/lab-keamanan-aplikasi-v1.zip). README memuat perintah, versi pustaka dan batas. Jalankan pada komputer uji dengan Node 24 dan Chrome:

```sh
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](/panduan/keamanan/pemulihan-akun-dan-mfa/).

## Bukti apa yang disimpan?

Gunakan [catatan verifikasi aplikasi](/template/catatan-verifikasi-keamanan-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](/panduan/keamanan/sesi-login-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](/panduan/owasp/rencana-verifikasi-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](https://creativecommons.org/licenses/by-sa/4.0/); kode dan hasil contoh orisinal Kompli memakai CC0 1.0.
## Sumber rujukan

- [W3C WebAuthn Level 3 — Recommendation 25 Agustus 2026](https://www.w3.org/TR/2026/REC-webauthn-3-20260825/) — Recommendation 25 Agustus 2026, §7.1/7.2: verifikasi registrasi dan assertion; §13.4.6: kehilangan kredensial.
- [OWASP Passkey Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Passkey_Security_Cheat_Sheet.html) — Registrasi pada akun yang tepat, verifikasi server, pencabutan serta pemulihan.

## Perlu membahas kebutuhan tim Anda?

Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.

[Konsultasikan kebutuhan Anda](https://kompli.id/konsultasi/?topik=keamanan)

## Bacaan terkait

- [Pemulihan akun dan MFA: reset yang tidak membuka akses sembarangan](https://kompli.id/panduan/keamanan/pemulihan-akun-dan-mfa/)
- [Sesi login dan token: timeout, logout, dan pencabutan](https://kompli.id/panduan/keamanan/sesi-login-dan-token/)
- [Menyusun rencana verifikasi keamanan aplikasi dengan ASVS](https://kompli.id/panduan/owasp/rencana-verifikasi-asvs/)
- [Catatan verifikasi keamanan aplikasi](https://kompli.id/template/catatan-verifikasi-keamanan-aplikasi/)

