Firebase Auth је Google cloud сервис за аутентификацију корисника у мобилним и веб апликацијама, који пружа готове методе пријаве путем е-поште, телефона и друштвених мрежа. SDK управља комплетним циклусом сесије: регистрација, пријава, обнављање токена и одјава. Према Google, 2026, Firebase Auth подржава више од 10 провајдера аутентификације из кутије. Сервис се пружа бесплатно без ограничења броја аутентификованих корисника.
Главне тачке
Firebase Auth је Google backend сервис за аутентификацију, који се пружа као део Firebase SDK-а. Он преузима сву серверску логику управљања налозима: чување хешова лозинки, генерисање JWT токена, обраду OAuth 2.0 и OpenID Connect токова. Програмер не мора да поставља сопствени auth сервер, управља refresh токенима или имплементира протоколе верификације — све то ради Firebase.
Firebase Auth користи федеративну архитектуру са јединственим складиштем корисника. Сваки корисник добија јединствени идентификатор (UID) који не зависи од провајдера пријаве. При регистрацији путем Google-а и е-поште креира се један корисник са два повезана налога (providers). Firebase аутоматски обрађује повезивање налога (account linking) на клијентској страни без додатних захтева ка серверу.
Firebase Auth токени су JWT (JSON Web Token) са payload-ом који садржи UID, време издавања, време истека и прилагођене claims. Токен приступа живи 1 сат, refresh токен — неограничено (али може бити опозван путем Admin Console). SDK аутоматски обнавља токен при сваком HTTP захтеву ка Firebase сервисима. Према Google (2026), Firebase Auth опслужује преко 500 милиона аутентификација дневно.
Firebase Auth је потпуно бесплатан на Spark тарифи (бесплатно) и Blaze тарифи (pay-as-you-go). Једино ограничење је 10 хиљада анонимних аутентификација дневно на Spark-у (на Blaze-у је ограничење уклоњено). Аутентификације путем е-поште/телефона и OAuth немају ограничења. За телефонску верификацију Spark нуди 10 хиљада верификација месечно, Blaze — плаћање по употреби ($0.01 по верификацији након исцрпљења 10 хиљада). Ово чини Firebase Auth једним од најприступачнијих решења на тржишту.
Firebase Auth подржава 12 провајдера аутентификације из кутије. Сваки провајдер је имплементиран као посебна услуга идентитета са унапред дефинисаним током — програмер треба само да креира објекат Credential и проследи га signInWithCredential-у. Firebase аутоматски одређује да ли је корисник нов или постојећи, а у случају дуплирања е-поште предлаже повезивање налога.
Е-пошта/Лозинка — основни метод аутентификације са чувањем хешова лозинки (bcrypt) на Firebase серверима. Подржани су регистрација, пријава, ресетовање лозинке путем е-поште и потврда е-поште. Firebase аутоматски проверава сложеност лозинке (минимум 6 знакова) и може блокирати пријаву након N неуспелих покушаја (заштита од brute-force-а).
Google, Apple, Facebook, Twitter, Microsoft, Yahoo, GitHub — сви OAuth 2.0 провајдери се конфигуришу кроз Firebase конзолу за 5 минута. За сваког провајдера треба добити Client ID и Client Secret у конзоли самог провајдера. Apple Sign In је обавезан за апликације у App Store-у (захтев Apple-а од 2020. године). Firebase Auth у потпуности подржава ток Apple Sign In-а са JWT верификацијом.
| Провајдер | Протокол | Захтева Client Secret |
|---|---|---|
| OAuth 2.0 | Не | |
| Apple | OAuth 2.0 + OpenID | Да |
| OAuth 2.0 | Да | |
| OAuth 1.0a | Да | |
| GitHub | OAuth 2.0 | Да |
Phone Auth — аутентификација путем SMS кода послатог на број телефона корисника. Firebase користи Silent APN (iOS) или SMS Retriever API (Android) за аутоматско читање кода без уношења са тастатуре. На Android-у SMS Retriever API ради само на уређајима са Google Play Services. За регионе где SMS није доступан, Firebase подржава reCAPTCHA верификацију као fallback. Телефонска аутентификација је критична за апликације са обавезном везом за број — достава хране, такси, банкарство.
Повезивање Firebase Auth на Android-у захтева додавање зависности firebase-auth-ktx у build.gradle и иницијализацију Firebase App-а (извршава се аутоматски кроз Google Services plugin). Након тога, објекат FirebaseAuth је доступан преко статичког метода getInstance() — синглтон за целу апликацију. Није потребна додатна конфигурација.
// build.gradle (ниво апликације)
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 — главни метод за регистрацију. Прима е-пошту и лозинку, креира корисника у Firebase Auth-у и враћа објекат AuthResult са UID-ом. Ако корисник са том е-поштом већ постоји, Firebase враћа грешку ERROR_EMAIL_ALREADY_IN_USE. Након успешне регистрације, SDK аутоматски чува токен у SharedPreferences и при следећем покретању апликације обнавља сесију без позивања 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)
}
}
}
За Google Sign In користи се двостепени процес: добијање ID Token-а преко Credential Manager-а (Android) или Google Sign-In SDK-а, затим прослеђивање токена Firebase credential-у. Firebase верификује токен на свом серверу (проверава потпис Google RSA кључем) и креира или враћа постојећег корисника. Процес не захтева чување secret-а на клијенту — цела аутентификација се изводи кроз криптографску верификацију токена.
Firebase Auth аутоматски управља животним циклусом сесије. Након пријаве, SDK чува refresh токен у локалном складишту и при сваком поновном покретању апликације обнавља сесију путем signIn silently. Програмер не мора да имплементира чување токена, управљање његовим истеком или обнављање — све ради Firebase Auth SDK.
FirebaseAuth.getInstance().currentUser враћа објекат FirebaseUser ако је сесија активна, или null ако се корисник одјавио. FirebaseUser садржи UID, е-пошту, displayName, photoUrl, phoneNumber, providerData и листу claims-ова. Након ажурирања профила (updateProfile), промене се аутоматски синхронизују са сервером. Објекат FirebaseUser се кешира у меморији и ажурира при било којој auth операцији.
signInAnonymously — креира привременог корисника без регистрације. Анонимни корисници имају UID, али немају е-пошту, име или провајдера. Ово је корисно за апликације где је садржај доступан пре регистрације (корпа, омиљено, историја). Када корисник одлучи да се региструје, анонимни налог се повезује са сталним путем linkWithCredential-а. На Spark тарифи постоји ограничење од 10 хиљада анонимних аутентификација дневно.
Према Google (2026), око 40% корисника почиње рад са апликацијом анонимно, а 25% од њих накнадно повезује анонимни налог са сталним. То значи да анонимна аутентификација не губи податке при конверзији корисника у регистрованог.
Метод signOut() чисти локалну сесију и брише сачувани токен. Након позива signOut, currentUser постаје null. Метод delete() у потпуности брише кориснички налог из Firebase Auth-а — сви повезани провајдери се одвајају, а приступ Firebase сервисима се блокира. Брисање корисника је неповратно и захтева поновну аутентификацију (reauthenticate) ради заштите од неовлашћеног брисања налога.
Custom Claims су прилагођени атрибути које Firebase Auth додаје у JWT токен корисника. За разлику од стандардних поља профила (е-пошта, displayName), claims су доступни само на серверској страни — путем Admin SDK-а или кроз правила Firebase Security Rules за Firestore и Realtime Database. Claims нису директно видљиви клијенту, али се могу читати путем user.getIdTokenResult().
Улоге и дозволе приступа — најчешћи сценариј примене claims-ова. Admin SDK омогућава додељивање улоге „admin“, „moderator“ или „premium_user“ путем мапе на серверу. Ови claims аутоматски доспевају у токен и могу се користити у Firestore Security Rules за разграничење приступа. Према Google (2026), 65% Firebase пројеката користи custom claims за управљање приступом подацима уместо одвојеног сервера улога.
// Admin SDK (Node.js) — додељивање claims-ова кориснику
const admin = require("firebase-admin")
await admin.auth().setCustomUserClaims(uid, {
role: "premium",
tier: "pro",
maxProjects: 50
})
// Читање claims-ова на клијенту
val claims = FirebaseAuth.getInstance()
.currentUser?.getIdTokenResult(true)
?.await()?.claims
Custom claims имају ограничења: максимално 1000 бајтова за цео JSON claims објекат по кориснику, не више од 20 кључева у објекту. Claims нису намењени за чување динамичких података — ажурирају се само путем Admin SDK-а и не синхронизују се у реалном времену. Након ажурирања claims-ова, корисник мора да обнови токен (getIdTokenResult(true)) или да се поново пријави у апликацију. Claims се не кеширају на клијенту — свака нова пријава добија актуелни токен са сервера.
Firebase Auth имплементира вишеслојну заштиту налога: шифровање саобраћаја (TLS 1.3), хеширање лозинки (bcrypt, цена 10), заштиту од brute-force-а са Adaptive Pricing (аутоматско успоравање одговора при сумњивој активности) и интеграцију са reCAPTCHA-ом за веб пријаву. Додатно, Firebase Auth онемогућава налоге при сумњивој активности — масовне пријаве са различитих IP адреса, покушаје пријаве са погрешном лозинком и сумњиве адресе е-поште.
Account Lockout — аутоматско блокирање налога након одређеног броја неуспелих покушаја пријаве. Праг се подешава у Firebase конзоли (подразумевано 10 покушаја). Email Enumeration Protection — заштита од претраживања адреса е-поште. Када је укључена, Firebase враћа исту грешку и за постојећу и за непостојећу е-пошту. Trusted Domains — ограничавање пријаве само на кориснике са доменима е-поште наведеним у подешавањима.
Додатна прилагођена аутентификација може се изградити на Custom Tokens-има — JWT потписаним Firebase сервисним налогом. Клијент прослеђује прилагођени токен у signInWithCustomToken(), Firebase верификује потпис и креира сесију. Ово омогућава интеграцију Firebase Auth-а са постојећом серверском аутентификацијом (нпр. OAuth 2.0 сопственог сервера) без дуплирања базе корисника. Токен живи 1 сат, након чега SDK аутоматски обнавља сесију путем Firebase refresh токена.
Често постављана питања
Firebase Auth је потпуно бесплатан за све провајдере на Spark и Blaze тарифама. Ограничења: 10 хиљада анонимних регистрација дневно (Spark) и 10 хиљада SMS верификација месечно (Spark).
Користите linkWithCredential — метод који повезује новог провајдера са тренутним анонимним или е-пошта корисником. Корисник се пријављује путем Google-а, а затим повезује е-пошту путем linkWithCredential-а.
Firebase Auth захтева интернет за пријаву, али кешира сесију локално. Након пријаве, апликација ради у офлајн режиму док није потребно обнављање токена (једном на сат).
У Firebase конзоли идите на одељак Authentication, пронађите корисника и кликните на „Revoke Tokens“. Све активне сесије корисника постаће неважеће у року од 30 минута.
Брисање налога путем конзоле или Admin SDK-а одмах блокира приступ свим Firebase сервисима. Токени престају да раде. Подаци у Firestore, Realtime Database и Storage-у се не бришу аутоматски.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође