Firebase Auth, mobil ve web uygulamalarında kullanıcı kimlik doğrulaması için Google'ın bulut hizmetidir ve e-posta, telefon ve sosyal ağlar aracılığıyla hazır giriş yöntemleri sağlar. SDK, oturumun tüm yaşam döngüsünü yönetir: kayıt, giriş, token yenileme ve çıkış. Google, 2026'ya göre, Firebase Auth kutudan çıkar çıkmaz 10'dan fazla kimlik doğrulama sağlayıcısını destekler. Hizmet, kimliği doğrulanmış kullanıcı sayısında herhangi bir sınırlama olmaksızın ücretsizdir.
Önemli Noktalar
Firebase Auth, Firebase SDK'nın bir parçası olarak sağlanan bir Google arka uç kimlik doğrulama hizmetidir. Sunucu tarafındaki tüm hesap yönetimi mantığını üstlenir: parola hash'lerini depolama, JWT token'ları oluşturma ve OAuth 2.0 ile OpenID Connect akışlarını işleme. Geliştiricilerin kendi kimlik doğrulama sunucularını kurmaları, yenileme token'larını yönetmeleri veya doğrulama protokolleri uygulamaları gerekmez — Firebase her şeyi yapar.
Firebase Auth, birleşik bir kullanıcı deposuyla federe bir mimari kullanır. Her kullanıcı, giriş sağlayıcısına bağlı olmayan benzersiz bir tanımlayıcı (UID) alır. Google ve e-posta ile kaydolurken, iki bağlantılı hesap (sağlayıcı) ile tek bir kullanıcı oluşturulur. Firebase, ek sunucu istekleri olmadan istemci tarafında hesap bağlamayı otomatik olarak yönetir.
Firebase Auth token'ları, UID, yayınlanma zamanı, son kullanma zamanı ve özel claims içeren bir yüke sahip JWT'lerdir (JSON Web Token). Erişim token'ları 1 saat geçerlidir, yenileme token'ları sınırsızdır (ancak Yönetici Konsolu aracılığıyla iptal edilebilir). SDK, Firebase hizmetlerine yapılan her HTTP isteğinde token'ı otomatik olarak yeniler. Google'a (2026) göre, Firebase Auth günde 500 milyondan fazla kimlik doğrulama işlemi gerçekleştirir.
Firebase Auth, Spark planında (ücretsiz) ve Blaze planında (kullandıkça öde) tamamen ücretsizdir. Tek sınırlama, Spark'ta günde 10 bin anonim kimlik doğrulamadır (Blaze'de sınırsız). E-posta/telefon ve OAuth kimlik doğrulamalarının sınırı yoktur. Telefon doğrulaması için Spark ayda 10 bin doğrulama sağlarken, Blaze kullanıma göre ücretlendirir (ilk 10 binden sonra her doğrulama için $0,01). Bu, Firebase Auth'u pazardaki en uygun fiyatlı çözümlerden biri yapar.
Firebase Auth, kutudan çıkar çıkmaz 12 kimlik doğrulama sağlayıcısını destekler. Her sağlayıcı, önceden tanımlanmış bir akışla ayrı bir kimlik hizmeti olarak uygulanır — geliştiricinin yalnızca bir Credential nesnesi oluşturması ve bunu signInWithCredential'a iletmesi yeterlidir. Firebase, kullanıcının yeni mi yoksa mevcut mu olduğunu otomatik olarak belirler ve e-posta tekrarı durumunda hesapları bağlamayı önerir.
Email/Password, Firebase sunucularında depolanan parola hash'leri (bcrypt) ile temel kimlik doğrulama yöntemidir. Kayıt, giriş, e-posta ile parola sıfırlama ve e-posta onaylama işlemlerini destekler. Firebase otomatik olarak parola gücünü kontrol eder (minimum 6 karakter) ve N başarısız denemeden sonra girişi engelleyebilir (kaba kuvvet koruması).
Google, Apple, Facebook, Twitter, Microsoft, Yahoo, GitHub — tüm OAuth 2.0 sağlayıcıları Firebase konsolu üzerinden 5 dakikada yapılandırılabilir. Her sağlayıcı için, sağlayıcının kendi konsolundan bir Client ID ve Client Secret almanız gerekir. Apple Sign In, App Store uygulamaları için zorunludur (2020'den beri Apple gereksinimi). Firebase Auth, JWT doğrulaması ile Apple Sign In akışını tam olarak destekler.
| Sağlayıcı | Protokol | Client Secret Gerekli |
|---|---|---|
| OAuth 2.0 | Hayır | |
| Apple | OAuth 2.0 + OpenID | Evet |
| OAuth 2.0 | Evet | |
| OAuth 1.0a | Evet | |
| GitHub | OAuth 2.0 | Evet |
Phone Auth, kullanıcının telefon numarasına gönderilen SMS kodu aracılığıyla kimlik doğrulamadır. Firebase, klavye girişi olmadan kodu otomatik olarak okumak için Silent APN (iOS) veya SMS Retriever API (Android) kullanır. Android'de SMS Retriever API yalnızca Google Play Hizmetleri olan cihazlarda çalışır. SMS'in mevcut olmadığı bölgeler için Firebase, yedek olarak reCAPTCHA doğrulamasını destekler. Telefon kimlik doğrulaması, telefon numarası bağlaması gerektiren uygulamalar (yemek teslimatı, araç çağırma, bankacılık) için kritik öneme sahiptir.
Android'de Firebase Auth eklemek, build.gradle'a firebase-auth-ktx bağımlılığını eklemeyi ve Firebase App'i başlatmayı gerektirir (Google Services eklentisi aracılığıyla otomatik olarak yapılır). Bundan sonra FirebaseAuth nesnesi, statik getInstance() yöntemi aracılığıyla kullanılabilir — tüm uygulama için bir tekil nesne. Ek yapılandırma gerekmez.
// build.gradle (app-level)
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, kayıt için ana yöntemdir. Bir e-posta ve parola alır, Firebase Auth'da bir kullanıcı oluşturur ve UID ile bir AuthResult nesnesi döndürür. Bu e-postaya sahip bir kullanıcı zaten varsa, Firebase ERROR_EMAIL_ALREADY_IN_USE hatasını döndürür. Başarılı kayıttan sonra SDK, token'ı otomatik olarak SharedPreferences'a kaydeder ve bir sonraki uygulama başlatılışında signIn'i çağırmadan oturumu geri yükler.
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)
}
}
}
Google Sign In için iki aşamalı bir süreç kullanılır: Credential Manager (Android) veya Google Sign-In SDK aracılığıyla bir ID Token almak, ardından token'ı bir Firebase kimlik bilgisine iletmek. Firebase, token'ı kendi sunucusunda doğrular (Google'ın RSA anahtarıyla imzayı kontrol eder) ve mevcut kullanıcıyı oluşturur veya döndürür. Süreç, istemcide bir sır saklamayı gerektirmez — tüm kimlik doğrulama, kriptografik token doğrulaması yoluyla yapılır.
Firebase Auth, oturum yaşam döngüsünü otomatik olarak yönetir. Giriş yaptıktan sonra SDK, yenileme token'ını yerel depolamaya kaydeder ve her uygulama yeniden başlatılışında, sessiz giriş yoluyla oturumu geri yükler. Geliştiricilerin token depolama, son kullanma yönetimi veya yenileme uygulamasına gerek yoktur — Firebase Auth SDK her şeyi yapar.
FirebaseAuth.getInstance().currentUser, oturum aktifse bir FirebaseUser nesnesi döndürür veya kullanıcı çıkış yapmışsa null döndürür. FirebaseUser, UID, e-posta, displayName, photoUrl, phoneNumber, providerData ve claims listesini içerir. Profil güncellemelerinden (updateProfile) sonra değişiklikler otomatik olarak sunucuyla senkronize edilir. FirebaseUser nesnesi bellekte önbelleğe alınır ve herhangi bir kimlik doğrulama işleminde güncellenir.
signInAnonymously, kayıt olmadan geçici bir kullanıcı oluşturur. Anonim kullanıcıların bir UID'si vardır ancak e-postaları, adları veya sağlayıcıları yoktur. Bu, içeriğin kayıttan önce kullanılabildiği uygulamalar (sepet, favoriler, geçmiş) için kullanışlıdır. Kullanıcı kaydolmaya karar verdiğinde, anonim hesap linkWithCredential aracılığıyla kalıcı bir hesaba bağlanır. Spark planında, günde 10 bin anonim kimlik doğrulama sınırı vardır.
Google'a (2026) göre, kullanıcıların yaklaşık %40'ı bir uygulamayı anonim olarak kullanmaya başlar ve bunların %25'i daha sonra anonim hesaplarını kalıcı bir hesaba bağlar. Bu, anonim kimlik doğrulamanın bir kullanıcıyı kayıtlı kullanıcıya dönüştürürken veri kaybetmediği anlamına gelir.
signOut() yöntemi yerel oturumu temizler ve kaydedilen token'ı kaldırır. signOut çağrıldıktan sonra currentUser null olur. delete() yöntemi, kullanıcı hesabını Firebase Auth'dan tamamen kaldırır — bağlı tüm sağlayıcıların bağlantısı kesilir ve Firebase hizmetlerine erişim engellenir. Kullanıcı silme geri alınamaz ve yetkisiz hesap silmeye karşı korumak için yeniden kimlik doğrulama gerektirir.
Custom Claims, Firebase Auth'un kullanıcının JWT token'ına eklediği özel niteliklerdir. Standart profil alanlarının (e-posta, displayName) aksine, claims yalnızca sunucu tarafında kullanılabilir — Admin SDK aracılığıyla veya Firestore ve Realtime Database için Firebase Security Rules'daki kurallar aracılığıyla. Claims istemci tarafından doğrudan görünmez ancak user.getIdTokenResult() aracılığıyla okunabilir.
Roller ve erişim hakları, claims'in en yaygın kullanım durumudur. Admin SDK, sunucuda bir harita aracılığıyla “admin”, “moderator” veya “premium_user” rolü atamaya olanak tanır. Bu claims otomatik olarak token'a dahil edilir ve erişim kontrolü için Firestore Security Rules'da kullanılabilir. Google'a (2026) göre, Firebase projelerinin %65'i ayrı bir rol sunucusu yerine veri erişim yönetimi için özel claims kullanır.
// Admin SDK (Node.js) — kullanıcıya claims atama
const admin = require("firebase-admin")
await admin.auth().setCustomUserClaims(uid, {
role: "premium",
tier: "pro",
maxProjects: 50
})
// İstemcide claims okuma
val claims = FirebaseAuth.getInstance()
.currentUser?.getIdTokenResult(true)
?.await()?.claims
Özel claims sınırlamalara sahiptir: kullanıcı başına tüm JSON claims nesnesi için maksimum 1000 bayt, nesnede en fazla 20 anahtar. Claims dinamik veri depolamak için tasarlanmamıştır — yalnızca Admin SDK aracılığıyla güncellenir ve gerçek zamanlı olarak senkronize edilmez. Claims güncellendikten sonra, kullanıcının token'ı yenilemesi (getIdTokenResult(true)) veya uygulamaya yeniden giriş yapması gerekir. Claims istemcide önbelleğe alınmaz — her yeni giriş, sunucudan güncel bir token alır.
Firebase Auth, çok katmanlı hesap koruması uygular: trafik şifreleme (TLS 1.3), parola hash'leme (bcrypt, maliyet 10), Adaptive Pricing ile kaba kuvvet koruması (şüpheli etkinlikte otomatik yanıt yavaşlatma) ve web girişi için reCAPTCHA entegrasyonu. Ek olarak Firebase Auth, şüpheli etkinlik durumunda hesapları devre dışı bırakır — farklı IP'lerden toplu girişler, yanlış parola denemeleri ve şüpheli e-posta adresleri.
Account Lockout — belirli sayıda başarısız giriş denemesinden sonra otomatik hesap kilitleme. Eşik, Firebase konsolunda yapılandırılabilir (varsayılan 10 deneme). Email Enumeration Protection — e-posta adreslerinin numaralandırılmasına karşı koruma. Etkinleştirildiğinde Firebase, hem var olan hem de var olmayan e-posta için aynı hatayı döndürür. Trusted Domains — girişi yalnızca ayarlarda belirtilen e-posta alan adlarına sahip kullanıcılarla sınırlama.
Ek özel kimlik doğrulama, Custom Tokens — bir Firebase hizmet hesabı tarafından imzalanan JWT kullanılarak oluşturulabilir. İstemci, özel token'ı signInWithCustomToken()'a iletir, Firebase imzayı doğrular ve bir oturum oluşturur. Bu, kullanıcı veritabanını çoğaltmadan Firebase Auth'u mevcut sunucu tarafı kimlik doğrulamasıyla (örneğin, kendi OAuth 2.0 sunucunuz) entegre etmeye olanak tanır. Token 1 saat geçerlidir, ardından SDK bir Firebase yenileme token'ı aracılığıyla oturumu otomatik olarak yeniler.
Sıkça Sorulan Sorular
Firebase Auth, Spark ve Blaze planlarında tüm sağlayıcılar için tamamen ücretsizdir. Limitler: günde 10 bin anonim kayıt (Spark) ve ayda 10 bin SMS doğrulaması (Spark).
linkWithCredential kullanın — mevcut anonim veya e-posta kullanıcısına yeni bir sağlayıcı bağlayan bir yöntem. Kullanıcı Google ile giriş yapar ve ardından e-postasını linkWithCredential aracılığıyla bağlar.
Firebase Auth giriş için internet gerektirir ancak oturumu yerel olarak önbelleğe alır. Giriş yapıldıktan sonra, token yenileme gereksinimi olana kadar (saatte bir) uygulama çevrimdışı modda çalışır.
Firebase konsolunda Authentication bölümüne gidin, kullanıcıyı bulun ve “Revoke Tokens” seçeneğine tıklayın. Tüm aktif kullanıcı oturumları 30 dakika içinde geçersiz hale gelir.
Konsol veya Admin SDK aracılığıyla hesap silme, tüm Firebase hizmetlerine erişimi anında engeller. Token'lar çalışmayı durdurur. Firestore, Realtime Database ve Storage'daki veriler otomatik olarak silinmez.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun