Firebase Auth adalah layanan cloud Google untuk autentikasi pengguna di aplikasi mobile dan web, yang menyediakan metode masuk siap pakai melalui email, telepon, dan jejaring sosial. SDK mengelola siklus sesi penuh: registrasi, masuk, pembaruan token, dan keluar. Menurut Google, 2026, Firebase Auth mendukung lebih dari 10 penyedia autentikasi siap pakai. Layanan ini diberikan gratis tanpa batasan jumlah pengguna yang terautentikasi.
Poin utama
Firebase Auth adalah layanan backend Google untuk autentikasi, yang disediakan sebagai bagian dari Firebase SDK. Layanan ini mengambil alih seluruh logika server manajemen akun: penyimpanan hash kata sandi, pembuatan token JWT, pemrosesan aliran OAuth 2.0 dan OpenID Connect. Pengembang tidak perlu menyiapkan server auth sendiri, mengelola token refresh, atau mengimplementasikan protokol verifikasi — semuanya dilakukan oleh Firebase.
Firebase Auth menggunakan arsitektur federatif dengan penyimpanan pengguna terpusat. Setiap pengguna mendapatkan pengenal unik (UID) yang tidak tergantung pada penyedia masuk. Saat registrasi melalui Google dan email, dibuat satu pengguna dengan dua akun terkait (providers). Firebase secara otomatis menangani penautan akun (account linking) di sisi klien tanpa permintaan tambahan ke server.
Token Firebase Auth adalah JWT (JSON Web Token) dengan payload yang berisi UID, waktu penerbitan, waktu kedaluwarsa, dan claim khusus. Token akses berlaku 1 jam, token refresh — tidak terbatas (tetapi dapat dicabut melalui Admin Console). SDK secara otomatis memperbarui token pada setiap permintaan HTTP ke layanan Firebase. Menurut Google (2026), Firebase Auth melayani lebih dari 500 juta autentikasi per hari.
Firebase Auth sepenuhnya gratis pada tarif Spark (gratis) dan Blaze (pay-as-you-go). Satu-satunya batasan adalah 10 ribu autentikasi anonim per hari di Spark (di Blaze batasan dihapus). Autentikasi email/telepon dan OAuth tidak memiliki batasan. Untuk verifikasi telepon, Spark menyediakan 10 ribu verifikasi per bulan, Blaze — bayar sesuai pemakaian ($0,01 per verifikasi setelah 10 ribu habis). Ini menjadikan Firebase Auth salah satu solusi paling terjangkau di pasar.
Firebase Auth mendukung 12 penyedia autentikasi siap pakai. Setiap penyedia diimplementasikan sebagai layanan identitas terpisah dengan aliran yang telah ditentukan — pengembang hanya perlu membuat objek Credential dan mengirimkannya ke signInWithCredential. Firebase secara otomatis menentukan apakah pengguna baru atau sudah ada, dan jika email duplikat, menawarkan untuk menautkan akun.
Email/Kata Sandi — metode autentikasi dasar dengan penyimpanan hash kata sandi (bcrypt) di server Firebase. Registrasi, masuk, reset kata sandi melalui email, dan konfirmasi email didukung. Firebase secara otomatis memeriksa kompleksitas kata sandi (minimal 6 karakter) dan dapat memblokir masuk setelah N percobaan gagal (perlindungan terhadap brute-force).
Google, Apple, Facebook, Twitter, Microsoft, Yahoo, GitHub — semua penyedia OAuth 2.0 dikonfigurasi melalui konsol Firebase dalam 5 menit. Untuk setiap penyedia, perlu mendapatkan Client ID dan Client Secret di konsol penyedia itu sendiri. Apple Sign In wajib untuk aplikasi di App Store (persyaratan Apple sejak 2020). Firebase Auth sepenuhnya mendukung aliran Apple Sign In dengan verifikasi JWT.
| Penyedia | Protokol | Memerlukan Client Secret |
|---|---|---|
| OAuth 2.0 | Tidak | |
| Apple | OAuth 2.0 + OpenID | Ya |
| OAuth 2.0 | Ya | |
| OAuth 1.0a | Ya | |
| GitHub | OAuth 2.0 | Ya |
Phone Auth — autentikasi melalui kode SMS yang dikirim ke nomor telepon pengguna. Firebase menggunakan Silent APN (iOS) atau SMS Retriever API (Android) untuk membaca kode secara otomatis tanpa memasukkan dari keyboard. Di Android, SMS Retriever API hanya berfungsi pada perangkat dengan Google Play Services. Untuk wilayah di mana SMS tidak tersedia, Firebase mendukung verifikasi reCAPTCHA sebagai fallback. Autentikasi telepon sangat penting untuk aplikasi dengan kewajiban penautan nomor — pengiriman makanan, taksi, perbankan.
Menghubungkan Firebase Auth di Android memerlukan penambahan dependensi firebase-auth-ktx ke build.gradle dan inisialisasi Firebase App (dilakukan secara otomatis melalui Google Services plugin). Setelah itu, objek FirebaseAuth tersedia melalui metode statis getInstance() — singleton untuk seluruh aplikasi. Tidak diperlukan konfigurasi tambahan.
// build.gradle (tingkat aplikasi)
dependencies {
implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
implementation("com.google.firebase:firebase-auth-ktx")
implementation("com.google.android.gms:play-services-auth:21.0.0")
}
createUserWithEmailAndPassword — metode utama untuk registrasi. Menerima email dan kata sandi, membuat pengguna di Firebase Auth, dan mengembalikan objek AuthResult dengan UID. Jika pengguna dengan email tersebut sudah ada, Firebase mengembalikan kesalahan ERROR_EMAIL_ALREADY_IN_USE. Setelah registrasi berhasil, SDK secara otomatis menyimpan token di SharedPreferences dan saat aplikasi dijalankan berikutnya memulihkan sesi tanpa memanggil signIn.
class AuthViewModel {
private val auth = FirebaseAuth.getInstance()
suspend fun register(email: String, password: String): Result<User> {
return try {
val result = auth.createUserWithEmailAndPassword(email, password).await()
Result.success(result.user?.toUser() ?: throw Exception("User is null"))
} catch (e: FirebaseAuthException) {
Result.failure(e)
}
}
}
Untuk Google Sign In digunakan proses dua langkah: mendapatkan ID Token melalui Credential Manager (Android) atau Google Sign-In SDK, kemudian mengirimkan token ke Firebase credential. Firebase memverifikasi token di servernya (memeriksa tanda tangan dengan kunci RSA Google) dan membuat atau mengembalikan pengguna yang ada. Proses tidak memerlukan penyimpanan rahasia di klien — seluruh autentikasi dilakukan melalui verifikasi kriptografis token.
Firebase Auth secara otomatis mengelola siklus hidup sesi. Setelah masuk, SDK menyimpan token refresh di penyimpanan lokal, dan setiap kali aplikasi dimulai ulang, sesi dipulihkan melalui signIn silently. Pengembang tidak perlu mengimplementasikan penyimpanan token, penanganan kedaluwarsa, atau penyegaran — semuanya dilakukan oleh Firebase Auth SDK.
FirebaseAuth.getInstance().currentUser mengembalikan objek FirebaseUser jika sesi aktif, atau null jika pengguna keluar. FirebaseUser berisi UID, email, displayName, photoUrl, phoneNumber, providerData, dan daftar claim. Setelah pembaruan profil (updateProfile), perubahan disinkronkan secara otomatis dengan server. Objek FirebaseUser di-cache di memori dan diperbarui pada setiap operasi auth.
signInAnonymously — membuat pengguna sementara tanpa registrasi. Pengguna anonim memiliki UID, tetapi tidak memiliki email, nama, atau penyedia. Ini berguna untuk aplikasi di mana konten tersedia sebelum registrasi (keranjang, favorit, riwayat). Ketika pengguna memutuskan untuk mendaftar, akun anonim ditautkan ke akun permanen melalui linkWithCredential. Pada tarif Spark ada batasan 10 ribu autentikasi anonim per hari.
Menurut Google (2026), sekitar 40% pengguna mulai bekerja dengan aplikasi secara anonim, dan 25% dari mereka kemudian menautkan akun anonim ke akun permanen. Ini berarti autentikasi anonim tidak kehilangan data saat konversi pengguna menjadi pengguna terdaftar.
Metode signOut() membersihkan sesi lokal dan menghapus token yang disimpan. Setelah memanggil signOut, currentUser menjadi null. Metode delete() menghapus akun pengguna sepenuhnya dari Firebase Auth — semua penyedia terkait diputuskan dan akses ke layanan Firebase diblokir. Penghapusan pengguna tidak dapat dibatalkan dan memerlukan autentikasi ulang (reauthenticate) untuk melindungi dari penghapusan akun yang tidak sah.
Custom Claims adalah atribut khusus yang ditambahkan Firebase Auth ke token JWT pengguna. Tidak seperti bidang profil standar (email, displayName), claim hanya tersedia di sisi server — melalui Admin SDK atau melalui aturan Firebase Security Rules untuk Firestore dan Realtime Database. Claim tidak terlihat langsung oleh klien, tetapi dapat dibaca melalui user.getIdTokenResult().
Peran dan izin akses — skenario penerapan claim yang paling umum. Admin SDK memungkinkan penetapan peran “admin”, “moderator”, atau “premium_user” melalui pemetaan di server. Claim ini secara otomatis masuk ke token dan dapat digunakan di Firestore Security Rules untuk membedakan akses. Menurut Google (2026), 65% proyek Firebase menggunakan custom claims untuk manajemen akses data daripada server peran terpisah.
// Admin SDK (Node.js) — penetapan claim kepada pengguna
const admin = require("firebase-admin")
await admin.auth().setCustomUserClaims(uid, {
role: "premium",
tier: "pro",
maxProjects: 50
})
// Membaca claim di sisi klien
val claims = FirebaseAuth.getInstance()
.currentUser?.getIdTokenResult(true)
?.await()?.claims
Custom claims memiliki batasan: maksimum 1000 byte untuk seluruh objek JSON claims per pengguna, tidak lebih dari 20 kunci dalam objek. Claim tidak dimaksudkan untuk menyimpan data dinamis — hanya diperbarui melalui Admin SDK dan tidak disinkronkan secara real-time. Setelah pembaruan claim, pengguna harus memperbarui token (getIdTokenResult(true)) atau masuk kembali ke aplikasi. Claim tidak di-cache di sisi klien — setiap login baru menerima token terkini dari server.
Firebase Auth mengimplementasikan perlindungan akun berlapis: enkripsi lalu lintas (TLS 1.3), hashing kata sandi (bcrypt, biaya 10), perlindungan terhadap brute-force dengan Adaptive Pricing (perlambatan respons otomatis saat aktivitas mencurigakan), dan integrasi dengan reCAPTCHA untuk login web. Selain itu, Firebase Auth menonaktifkan akun saat aktivitas mencurigakan — login massal dari IP berbeda, upaya login dengan kata sandi salah, dan alamat email mencurigakan.
Account Lockout — pemblokiran akun otomatis setelah sejumlah percobaan login gagal. Ambang batas dapat dikonfigurasi di konsol Firebase (standar 10 percobaan). Email Enumeration Protection — perlindungan terhadap pencarian alamat email. Saat diaktifkan, Firebase mengembalikan kesalahan yang sama untuk email yang ada maupun tidak ada. Trusted Domains — pembatasan login hanya untuk pengguna dengan domain email yang ditentukan dalam pengaturan.
Autentikasi khusus tambahan dapat dibangun di atas Custom Tokens — JWT yang ditandatangani dengan akun layanan Firebase. Klien mengirimkan token khusus ke signInWithCustomToken(), Firebase memverifikasi tanda tangan dan membuat sesi. Ini memungkinkan integrasi Firebase Auth dengan autentikasi server yang ada (misalnya, OAuth 2.0 server sendiri) tanpa menduplikasi basis data pengguna. Token berlaku 1 jam, setelah itu SDK secara otomatis memperbarui sesi melalui token refresh Firebase.
Pertanyaan yang sering diajukan
Firebase Auth sepenuhnya gratis untuk semua penyedia di tarif Spark dan Blaze. Batasan: 10 ribu registrasi anonim per hari (Spark) dan 10 ribu verifikasi SMS per bulan (Spark).
Gunakan linkWithCredential — metode yang menautkan penyedia baru ke pengguna anonim atau email saat ini. Pengguna masuk melalui Google, kemudian menautkan email melalui linkWithCredential.
Firebase Auth memerlukan internet untuk masuk, tetapi menyimpan sesi di cache lokal. Setelah masuk, aplikasi bekerja dalam mode offline hingga token perlu diperbarui (sekali per jam).
Di konsol Firebase, buka bagian Authentication, temukan pengguna, dan klik “Revoke Tokens”. Semua sesi aktif pengguna akan menjadi tidak valid dalam 30 menit.
Penghapusan akun melalui konsol atau Admin SDK segera memblokir akses ke semua layanan Firebase. Token berhenti berfungsi. Data di Firestore, Realtime Database, dan Storage tidak dihapus secara otomatis.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga