Firebase Auth je cloudová služba Google pro ověřování uživatelů v mobilních a webových aplikacích, která poskytuje hotové metody přihlášení přes e-mail, telefon a sociální sítě. SDK spravuje celý cyklus relace: registraci, přihlášení, obnovení tokenu a odhlášení. Podle Google, 2026 podporuje Firebase Auth více než 10 poskytovatelů ověřování z krabice. Služba je poskytována zdarma bez omezení počtu ověřených uživatelů.
Hlavní body
Firebase Auth je backendová služba Google pro ověřování, poskytovaná jako součást Firebase SDK. Přebírá veškerou serverovou logiku správy účtů: ukládání hashů hesel, generování JWT tokenů, zpracování toků OAuth 2.0 a OpenID Connect. Vývojář nemusí nasazovat vlastní auth server, spravovat refresh tokeny nebo implementovat ověřovací protokoly — vše dělá Firebase.
Firebase Auth používá federativní architekturu s jednotným úložištěm uživatelů. Každý uživatel obdrží jedinečný identifikátor (UID), který nezávisí na poskytovateli přihlášení. Při registraci přes Google a e-mail se vytvoří jeden uživatel se dvěma propojenými účty (providers). Firebase automaticky zpracovává propojování účtů (account linking) na straně klienta bez dodatečných požadavků na server.
Tokeny Firebase Auth jsou JWT (JSON Web Token) s payloadem obsahujícím UID, čas vydání, čas vypršení a vlastní claims. Přístupový token žije 1 hodinu, refresh token — neomezeně (ale může být odvolán pomocí Admin Console). SDK automaticky obnovuje token při každém HTTP požadavku na služby Firebase. Podle Google (2026) Firebase Auth obsluhuje více než 500 milionů ověření denně.
Firebase Auth je zcela zdarma v tarifu Spark (zdarma) a Blaze (pay-as-you-go). Jediným omezením je 10 tisíc anonymních ověření denně na Sparku (na Blaze je limit odstraněn). Ověření e-mailem/telefonem a OAuth nemají limity. Pro telefonní ověření poskytuje Spark 10 tisíc ověření měsíčně, Blaze — platba podle použití ($0,01 za ověření po vyčerpání 10 tisíc). To dělá z Firebase Auth jednu z nejdostupnějších řešení na trhu.
Firebase Auth podporuje 12 poskytovatelů ověřování z krabice. Každý poskytovatel je implementován jako samostatná identitní služba s předdefinovaným tokem — vývojář musí pouze vytvořit objekt Credential a předat jej signInWithCredential. Firebase automaticky určuje, zda je uživatel nový nebo stávající, a v případě duplicitního e-mailu nabízí propojení účtů.
E-mail/Heslo — základní metoda ověřování s ukládáním hashů hesel (bcrypt) na serverech Firebase. Podporována je registrace, přihlášení, obnovení hesla e-mailem a potvrzení e-mailu. Firebase automaticky kontroluje složitost hesla (minimálně 6 znaků) a může blokovat přihlášení po N neúspěšných pokusech (ochrana proti brute-force).
Google, Apple, Facebook, Twitter, Microsoft, Yahoo, GitHub — všichni poskytovatelé OAuth 2.0 se konfigurují přes konzoli Firebase během 5 minut. Pro každého poskytovatele je třeba získat Client ID a Client Secret v konzoli samotného poskytovatele. Apple Sign In je povinný pro aplikace v App Store (požadavek Apple od roku 2020). Firebase Auth plně podporuje tok Apple Sign In s ověřením JWT.
| Poskytovatel | Protokol | Vyžaduje Client Secret |
|---|---|---|
| OAuth 2.0 | Ne | |
| Apple | OAuth 2.0 + OpenID | Ano |
| OAuth 2.0 | Ano | |
| OAuth 1.0a | Ano | |
| GitHub | OAuth 2.0 | Ano |
Phone Auth — ověřování pomocí SMS kódu odeslaného na telefonní číslo uživatele. Firebase používá Silent APN (iOS) nebo SMS Retriever API (Android) pro automatické čtení kódu bez zadávání z klávesnice. Na Androidu SMS Retriever API funguje pouze na zařízeních s Google Play Services. Pro regiony, kde SMS není k dispozici, Firebase podporuje ověření reCAPTCHA jako záložní řešení. Telefonní ověřování je kritické pro aplikace s povinným propojením na číslo — rozvoz jídla, taxi, bankovnictví.
Připojení Firebase Auth na Androidu vyžaduje přidání závislosti firebase-auth-ktx do build.gradle a inicializaci Firebase App (provádí se automaticky přes Google Services plugin). Poté je objekt FirebaseAuth dostupný přes statickou metodu getInstance() — singleton pro celou aplikaci. Není vyžadována žádná další konfigurace.
// build.gradle (úroveň aplikace)
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 — hlavní metoda pro registraci. Přijímá e-mail a heslo, vytváří uživatele ve Firebase Auth a vrací objekt AuthResult s UID. Pokud uživatel s tímto e-mailem již existuje, Firebase vrací chybu ERROR_EMAIL_ALREADY_IN_USE. Po úspěšné registraci SDK automaticky uloží token do SharedPreferences a při příštím spuštění aplikace obnoví relaci bez volání 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)
}
}
}
Pro Google Sign In se používá dvoufázový proces: získání ID Token přes Credential Manager (Android) nebo Google Sign-In SDK, poté předání tokenu Firebase credential. Firebase ověřuje token na svém serveru (kontroluje podpis pomocí RSA klíče Google) a vytváří nebo vrací stávajícího uživatele. Proces nevyžaduje ukládání tajemství na klientovi — celé ověřování probíhá prostřednictvím kryptografického ověření tokenů.
Firebase Auth automaticky spravuje životní cyklus relace. Po přihlášení SDK uloží refresh token do lokálního úložiště a při každém restartu aplikace obnoví relaci pomocí signIn silently. Vývojář nemusí implementovat ukládání tokenu, zpracování jeho vypršení nebo obnovování — vše dělá Firebase Auth SDK.
FirebaseAuth.getInstance().currentUser vrací objekt FirebaseUser, pokud je relace aktivní, nebo null, pokud se uživatel odhlásil. FirebaseUser obsahuje UID, e-mail, displayName, photoUrl, phoneNumber, providerData a seznam claims. Po aktualizaci profilu (updateProfile) se změny automaticky synchronizují se serverem. Objekt FirebaseUser je ukládán do mezipaměti v paměti a aktualizován při jakékoli operaci auth.
signInAnonymously — vytváří dočasného uživatele bez registrace. Anonymní uživatelé mají UID, ale nemají e-mail, jméno ani poskytovatele. To je užitečné pro aplikace, kde je obsah dostupný před registrací (košík, oblíbené, historie). Když se uživatel rozhodne zaregistrovat, anonymní účet je propojen s trvalým prostřednictvím linkWithCredential. V tarifu Spark platí limit 10 tisíc anonymních ověření denně.
Podle Google (2026) začíná přibližně 40 % uživatelů pracovat s aplikací anonymně a 25 % z nich následně propojí anonymní účet s trvalým. To znamená, že anonymní ověřování neztrácí data při konverzi uživatele na registrovaného uživatele.
Metoda signOut() čistí lokální relaci a odstraňuje uložený token. Po volání signOut se currentUser stane null. Metoda delete() zcela odstraní uživatelský účet z Firebase Auth — všichni propojení poskytovatelé jsou odpojeni a přístup ke službám Firebase je zablokován. Smazání uživatele je nevratné a vyžaduje opětovné ověření (reauthenticate) pro ochranu před neautorizovaným smazáním účtu.
Custom Claims jsou vlastní atributy, které Firebase Auth přidává do JWT tokenu uživatele. Na rozdíl od standardních polí profilu (e-mail, displayName) jsou claims dostupné pouze na straně serveru — prostřednictvím Admin SDK nebo prostřednictvím pravidel Firebase Security Rules pro Firestore a Realtime Database. Claims nejsou přímo viditelné pro klienta, ale lze je číst pomocí user.getIdTokenResult().
Role a přístupová oprávnění — nejčastější scénář použití claims. Admin SDK umožňuje přiřazení role „admin“, „moderator“ nebo „premium_user“ pomocí mapování na serveru. Tyto claims se automaticky dostanou do tokenu a lze je použít v Firestore Security Rules pro rozlišení přístupu. Podle Google (2026) 65 % projektů Firebase používá custom claims pro správu přístupu k datům místo samostatného serveru rolí.
// Admin SDK (Node.js) — přiřazení claims uživateli
const admin = require("firebase-admin")
await admin.auth().setCustomUserClaims(uid, {
role: "premium",
tier: "pro",
maxProjects: 50
})
// Čtení claims na klientovi
val claims = FirebaseAuth.getInstance()
.currentUser?.getIdTokenResult(true)
?.await()?.claims
Custom claims mají omezení: maximálně 1000 bytů pro celý JSON claims objekt na uživatele, ne více než 20 klíčů v objektu. Claims nejsou určeny pro ukládání dynamických dat — aktualizují se pouze přes Admin SDK a nesynchronizují se v reálném čase. Po aktualizaci claims musí uživatel obnovit token (getIdTokenResult(true)) nebo se znovu přihlásit do aplikace. Claims se neukládají do mezipaměti na straně klienta — každé nové přihlášení obdrží aktuální token ze serveru.
Firebase Auth implementuje vícevrstvou ochranu účtů: šifrování provozu (TLS 1.3), hašování hesel (bcrypt, cena 10), ochranu proti brute-force s Adaptive Pricing (automatické zpomalení odpovědi při podezřelé aktivitě) a integraci s reCAPTCHA pro webové přihlášení. Kromě toho Firebase Auth deaktivuje účty při podezřelé aktivitě — hromadná přihlášení z různých IP, pokusy o přihlášení s nesprávným heslem a podezřelé e-mailové adresy.
Account Lockout — automatické uzamčení účtu po určitém počtu neúspěšných pokusů o přihlášení. Práh je nastavitelný v konzoli Firebase (výchozí 10 pokusů). Email Enumeration Protection — ochrana proti zjišťování e-mailových adres. Při zapnutí Firebase vrací stejnou chybu pro existující i neexistující e-mail. Trusted Domains — omezení přihlášení pouze na uživatele s e-mailovými doménami uvedenými v nastavení.
Další vlastní ověřování lze postavit na Custom Tokens — JWT podepsaných servisním účtem Firebase. Klient předá vlastní token do signInWithCustomToken(), Firebase ověří podpis a vytvoří relaci. To umožňuje integraci Firebase Auth se stávajícím serverovým ověřováním (např. OAuth 2.0 vlastního serveru) bez duplikování databáze uživatelů. Token žije 1 hodinu, poté SDK automaticky obnoví relaci pomocí Firebase refresh tokenu.
Často kladené otázky
Firebase Auth je zcela zdarma pro všechny poskytovatele v tarifech Spark a Blaze. Limity: 10 tisíc anonymních registrací denně (Spark) a 10 tisíc SMS ověření měsíčně (Spark).
Použijte linkWithCredential — metodu, která propojuje nového poskytovatele s aktuálním anonymním nebo e-mailovým uživatelem. Uživatel se přihlásí přes Google a poté propojí e-mail pomocí linkWithCredential.
Firebase Auth vyžaduje internet pro přihlášení, ale ukládá relaci do lokální mezipaměti. Po přihlášení aplikace funguje v offline režimu, dokud není vyžadováno obnovení tokenu (jednou za hodinu).
V konzoli Firebase přejděte do sekce Authentication, najděte uživatele a klikněte na „Revoke Tokens“. Všechny aktivní relace uživatele se stanou neplatnými do 30 minut.
Smazání účtu přes konzoli nebo Admin SDK okamžitě blokuje přístup ke všem službám Firebase. Tokeny přestanou fungovat. Data ve Firestore, Realtime Database a Storage nejsou automaticky smazána.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také