Section 16/162 menit

16. Ringkasan & Decision Guide

16. Ringkasan & Decision Guide

Skenario Rekomendasi
Konfigurasi awal — passkey tidak bekerja Verifikasi AASA file dan RP ID match, cek Xcode entitlements
Registrasi dengan keamanan enterprise attestationPreference = .direct + server-side attestation verification
Login tanpa mengganggu UX performAutoFillAssistedRequests() di viewDidLoad
User punya multiple device iCloud Keychain sync otomatis — tidak perlu tambahan konfigurasi
User login di perangkat baru Cross-device auth tersedia otomatis di system sheet
App keuangan/kesehatan userVerificationPreference = .required wajib
User cancel — respons yang tepat Error code .canceled — jangan tampilkan error, resume conditional
Tidak ada passkey di device Error .notHandled — fallback ke password/OTP
Multiple domain untuk satu app Satu AASA per domain, RP ID berbeda per domain
Testing tanpa device fisik Simulator Xcode 15+ mendukung passkey penuh
Migrasi dari password 4 fase: Offer → Promote → Prefer → Optional

Checklist Production

swift
□ AASA file tersedia di https://[domain]/.well-known/apple-app-site-association
□ AASA Content-Type: application/json, tanpa redirect
□ Xcode entitlements: webcredentials:[domain] untuk semua environment
□ RP ID sama persis antara app, server, dan AASA
□ Server verifikasi challenge, origin, RP ID hash, dan signature
□ Sign count disimpan dan diverifikasi di server (anti-cloning)
□ Error .canceled tidak tampilkan error ke user
□ Error .notHandled memiliki fallback (password/OTP)
□ `authController` di-retain selama request berlangsung
□ `performAutoFillAssistedRequests()` dipanggil sebelum keyboard muncul
□ Testing di simulator (Xcode 15+) dan device fisik
□ Analytics untuk track adoption rate dan error patterns
□ Fallback ke password/OTP tersedia dan teruji

Passkeys bukan sekadar mengganti password — ini adalah pergeseran fundamental ke model autentikasi yang lebih kuat, lebih mudah digunakan, dan tidak bisa di-phish. Investasi dalam implementasi yang benar di awal akan terbayar dengan user retention yang lebih tinggi dan insiden keamanan yang lebih rendah.