Firebase Auth: какво е, методи за удостоверяване и доставчици за вход

Автор: IT Sectr Публикувано: 2026-04-28 Време за четене: 9 мин

Firebase Auth е облачна услуга на Google за удостоверяване на потребители в мобилни и уеб приложения, предоставяща готови методи за вход чрез имейл, телефон и социални мрежи. SDK управлява пълния цикъл на сесията: регистрация, вход, обновяване на токен и изход. Според Google, 2026, Firebase Auth поддържа повече от 10 доставчика на удостоверяване направо от кутията. Услугата се предоставя безплатно без ограничения за броя на удостоверените потребители.

Основни точки

  • Firebase Auth — единен SDK за удостоверяване с поддръжка на имейл, Google, Apple, Facebook, Twitter и телефонен вход.
  • Услугата автоматично управлява токените за достъп и обновяване, освобождавайки разработчика от имплементиране на JWT логика.
  • FirebaseUI Auth — готова библиотека с екрани за вход с персонализиране според марката на приложението.
  • Персонализираните claims позволяват задаване на роли и права чрез Admin SDK.
  • Анонимното удостоверяване дава временен UID без регистрация с възможност за последващо свързване с постоянен акаунт.

Какво е Firebase Auth

Firebase Auth е backend услуга на Google за удостоверяване, предоставяна като част от 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

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
GoogleOAuth 2.0Не
AppleOAuth 2.0 + OpenIDДа
FacebookOAuth 2.0Да
TwitterOAuth 1.0aДа
GitHubOAuth 2.0Да

Телефонно удостоверяване

Phone Auth — удостоверяване чрез SMS код, изпратен на телефонния номер на потребителя. Firebase използва Silent APN (iOS) или SMS Retriever API (Android) за автоматично разчитане на кода без въвеждане от клавиатурата. На Android SMS Retriever API работи само на устройства с Google Play Services. За региони, където SMS не е наличен, Firebase поддържа reCAPTCHA верификация като резервен вариант. Телефонното удостоверяване е критично за приложения със задължително свързване с номер — доставка на храна, такси, банкиране.

Интеграция на Firebase Auth в Android

Свързване на Firebase Auth в Android изисква добавяне на зависимостта firebase-auth-ktx в build.gradle и инициализация на Firebase App (изпълнява се автоматично чрез Google Services plugin). След това обектът FirebaseAuth е достъпен чрез статичния метод getInstance() — сингълтон за цялото приложение. Не е необходима допълнителна конфигурация.

groovy
// 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.

kotlin
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

За Google Sign In се използва двуетапен процес: получаване на ID Token чрез Credential Manager (Android) или Google Sign-In SDK, след което предаване на токена на Firebase credential. Firebase проверява токена на своя сървър (проверява подписа с RSA ключа на Google) и създава или връща съществуващия потребител. Процесът не изисква съхранение на тайна от клиентска страна — цялото удостоверяване се извършва чрез криптографска проверка на токените.

Управление на потребители и сесии

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) за защита от неоторизирано изтриване на акаунт.

Персонализирани claims и управление на роли

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 за управление на достъпа до данни вместо отделен сървър за роли.

kotlin
// 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

Ограничения на 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?

Firebase Auth е напълно безплатен за всички доставчици в тарифите Spark и Blaze. Ограничения: 10 хиляди анонимни регистрации на ден (Spark) и 10 хиляди SMS верификации на месец (Spark).

Как да свържа няколко доставчика с един акаунт?

Използвайте linkWithCredential — методът, който свързва нов доставчик с текущия анонимен или имейл потребител. Потребителят влиза чрез Google, след което свързва имейла чрез linkWithCredential.

Може ли да се използва Firebase Auth без интернет?

Firebase Auth изисква интернет за влизане, но кешира сесията локално. След входа приложението работи в офлайн режим, докато не се наложи обновяване на токена (веднъж на час).

Как да оттегля токена на потребител?

В конзолата на Firebase отидете в раздела Authentication, намерете потребителя и кликнете на „Revoke Tokens“. Всички активни сесии на потребителя ще станат невалидни в рамките на 30 минути.

Какво се случва при изтриване на потребител?

Изтриването на акаунт чрез конзолата или Admin SDK незабавно блокира достъпа до всички Firebase услуги. Токените спират да работят. Данните във Firestore, Realtime Database и Storage не се изтриват автоматично.

Резюме

  • Firebase Auth — облачна услуга за удостоверяване на Google с единен SDK за Android, iOS и Web.
  • Поддържа 12 доставчика за вход направо от кутията: имейл, телефон, Google, Apple, Facebook, Twitter и други.
  • SDK автоматично управлява JWT токените — съхранение, обновяване, възстановяване на сесия при рестарт.
  • Custom claims чрез Admin SDK позволяват имплементиране на модел за достъп, базиран на роли, без отделен сървър.
  • Анонимното удостоверяване дава временен UID с възможност за свързване с постоянен акаунт.
  • Интеграцията в Android изисква една зависимост firebase-auth-ktx без допълнителна конфигурация.
  • Услугата включва вградена защита срещу brute-force, разкриване на имейли и автоматично блокиране на подозрителни акаунти.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също