Biometric Auth: Face ID & Fingerprint
Unlock aplikasi dengan wajah atau sidik jari
Tujuan Pembelajaran
- Memahami cara kerja biometric authentication di mobile
- Mampu mengimplementasikan expo-local-authentication
- Mengerti fallback strategy saat biometric tidak tersedia
Analogi
Biometric = Kunci Pintu Otomatis:
- Wajah = Face ID (iOS)
- Sidik Jari = Touch ID (iOS) / Fingerprint (Android)
- Kunci password = fallback
Device punya secure enclave → autentikasi terjadi di hardware, bukan di app. App cuma tanya: "ini bener user-nya?" dan OS jawab: "ya/tidak".
Biometric seperti kunci pintu otomatis — Face ID atau Touch ID. Device yang verifikasi, app hanya menerima hasilnya. Tidak ada data biometrik yang keluar dari device.
Penjelasan Konsep
Biometric authentication menggunakan sensor hardware (Face ID, Touch ID, fingerprint) untuk memverifikasi identitas user. Keamanan tinggi karena data biometrik tidak pernah meninggalkan secure enclave device.
expo-local-authentication menyediakan API sederhana: (1) hasHardwareAsync() — cek device support biometric. (2) isEnrolledAsync() — cek user sudah daftarkan biometric. (3) authenticateAsync(options) — minta user autentikasi.
Options: (1) promptMessage: text yang muncul di dialog. (2) fallbackLabel: text tombol fallback password. (3) disableDeviceFallback: true = hanya biometric, tidak ada opsi password device. (4) requireConfirmation: true (Android only) — user harus konfirmasi dengan tap.
Flow: (1) App start → cek biometric support. (2) User login → tampilkan biometric prompt. (3) Kalau sukses → dapatkan token dari secure store → auto-login. (4) Kalau gagal → fallback ke password/PIN.
Security considerations: (1) Biometric + token di secure store (expo-secure-store) = 2-factor. (2) Jangan simpan password di AsyncStorage. (3) Handle biometric change (user tambah/hapus sidik jari) — invalidate session.
Fallback strategy: (1) Biometric available → offer biometric. (2) Biometric tidak tersedia → degrasi ke PIN/password. (3) Biometric gagal 3x → fallback ke password (jangan infinite retry).
Inti yang Perlu Dipahami
Bagian ini berfokus pada memahami cara kerja biometric authentication di mobile., mampu mengimplementasikan expo-local-authentication., dan mengerti fallback strategy saat biometric tidak tersedia. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Biometric Auth, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Biometric seperti kunci pintu otomatis — Face ID atau Touch ID. Device yang verifikasi, app hanya menerima hasilnya. Tidak ada data biometrik yang keluar dari device. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa tsx. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. hasHardwareAsync cek dukungan device. authenticateAsync tampilkan prompt native. success: true = user terverifikasi. Ambil token dari secure store, bukan generate baru.
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
import * as LocalAuthentication from "expo-local-authentication";
import { useEffect, useState } from "react";
import { View, Text, Pressable } from "react-native";
export default function BiometricLogin() {
const [compatible, setCompatible] = useState(false);
useEffect(() => {
LocalAuthentication.hasHardwareAsync().then(setCompatible);
}, []);
const authenticate = async () => {
const result = await LocalAuthentication.authenticateAsync({ promptMessage: "Login ke aplikasi", fallbackLabel: "Gunakan password" });
if (result.success) {
const token = await getStoredToken();
login(token);
}
};
return compatible ? <Pressable onPress={authenticate}><Text>Login dengan Biometric</Text></Pressable> : <Text>Biometric tidak tersedia</Text>;
}Penjelasan Kode
Prompt AI
Desain auth flow: (a) pertama buka app → biometric + token di secure store, (b) token expire → refresh token di background, (c) biometric berubah → require full re-login. Tulis flow lengkapnya.
Pertanyaan Reflektif
Seberapa sering kamu pakai Face ID/Touch ID di aplikasi? Apakah biometric lebih nyaman dari password? Apa trade-off keamanannya?