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 — کتابخانه آماده صفحات ورود با قابلیت سفارشی‌سازی متناسب با برند برنامه.
  • claimهای سفارشی امکان تعیین نقش‌ها و مجوزها را از طریق Admin SDK فراهم می‌کنند.
  • احراز هویت ناشناس یک UID موقت بدون ثبت‌نام با امکان پیوند بعدی به حساب دائمی ارائه می‌دهد.

Firebase Auth چیست

Firebase Auth یک سرویس بک‌اند Google برای احراز هویت است که به عنوان بخشی از Firebase SDK ارائه می‌شود. این سرویس تمام منطق سرور مدیریت حساب‌ها را بر عهده می‌گیرد: ذخیره هش رمزهای عبور، تولید توکن‌های JWT، پردازش جریان‌های OAuth 2.0 و OpenID Connect. برنامه‌نویس نیازی به راه‌اندازی سرور احراز هویت اختصاصی، مدیریت توکن‌های به‌روزرسانی یا پیاده‌سازی پروتکل‌های تأیید ندارد — همه این کارها را Firebase انجام می‌دهد.

معماری سرویس

Firebase Auth از معماری فدرال با ذخیره‌گاه یکپارچه کاربران استفاده می‌کند. هر کاربر یک شناسه یکتا (UID) دریافت می‌کند که به ارائه‌دهنده ورود وابسته نیست. هنگام ثبت‌نام از طریق Google و ایمیل، یک کاربر با دو حساب مرتبط (providers) ایجاد می‌شود. Firebase به طور خودکار پیوند حساب‌ها (account linking) را در سمت کلاینت بدون درخواست‌های اضافی به سرور پردازش می‌کند.

توکن‌های Firebase Auth JWT (JSON Web Token) با payload حاوی UID، زمان صدور، زمان انقضا و claimهای سفارشی هستند. توکن دسترسی 1 ساعت و توکن به‌روزرسانی نامحدود عمر می‌کند (اما می‌توان از طریق 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 — پرداخت بر اساس مصرف (پس از اتمام 10 هزار، $0.01 برای هر تأیید). این 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 را به عنوان fallback پشتیبانی می‌کند. احراز هویت تلفنی برای برنامه‌هایی با الزام اتصال به شماره — تحویل غذا، تاکسی، بانکداری حیاتی است.

ادغام Firebase Auth در Android

اتصال Firebase Auth در Android نیاز به افزودن وابستگی firebase-auth-ktx به build.gradle و مقداردهی اولیه Firebase App (که به طور خودکار از طریق Google Services plugin انجام می‌شود) دارد. پس از آن، شی FirebaseAuth از طریق متد ایستا getInstance() در دسترس است — یک singleton برای کل برنامه. هیچ پیکربندی اضافی دیگری لازم نیست.

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 بررسی می‌کند) و کاربر موجود را ایجاد یا برمی‌گرداند. این فرآیند نیاز به ذخیره secret در کلاینت ندارد — تمام احراز هویت از طریق تأیید رمزنگاری توکن‌ها انجام می‌شود.

مدیریت کاربران و نشست‌ها

Firebase Auth به طور خودکار چرخه حیات نشست را مدیریت می‌کند. پس از ورود، SDK توکن به‌روزرسانی را در ذخیره‌گاه محلی ذخیره می‌کند و در هر راه‌اندازی مجدد برنامه نشست را از طریق signIn silently بازیابی می‌کند. برنامه‌نویس نیازی به پیاده‌سازی ذخیره توکن، مدیریت انقضای آن یا به‌روزرسانی ندارد — همه کارها را Firebase Auth SDK انجام می‌دهد.

کاربر فعلی

FirebaseAuth.getInstance().currentUser اگر نشست فعال باشد شی FirebaseUser و اگر کاربر خارج شده باشد null برمی‌گرداند. FirebaseUser شامل UID، ایمیل، displayName، photoUrl، phoneNumber، providerData و فهرست claimها است. پس از به‌روزرسانی پروفایل (updateProfile) تغییرات به طور خودکار با سرور همگام می‌شوند. شی FirebaseUser در حافظه کش می‌شود و در هر عملیات auth به‌روزرسانی می‌شود.

احراز هویت ناشناس

signInAnonymously — کاربر موقتی بدون ثبت‌نام ایجاد می‌کند. کاربران ناشناس UID دارند اما ایمیل، نام یا ارائه‌دهنده ندارند. این برای برنامه‌هایی که محتوا قبل از ثبت‌نام در دسترس است (سبد خرید، موارد دلخواه، تاریخچه) مفید است. وقتی کاربر تصمیم به ثبت‌نام می‌گیرد، حساب ناشناس از طریق linkWithCredential به حساب دائمی پیوند می‌خورد. در تعرفه Spark محدودیت 10 هزار احراز هویت ناشناس در روز وجود دارد.

به گفته Google (2026)، حدود 40٪ کاربران کار با برنامه را به صورت ناشناس شروع می‌کنند و 25٪ از آنها بعداً حساب ناشناس را به حساب دائمی پیوند می‌دهند. این بدان معناست که احراز هویت ناشناس هنگام تبدیل کاربر به کاربر ثبت‌نام شده داده‌ها را از دست نمی‌دهد.

خروج و حذف حساب

متد signOut() نشست محلی را پاک می‌کند و توکن ذخیره شده را حذف می‌کند. پس از فراخوانی signOut، currentUser null می‌شود. متد delete() حساب کاربر را به طور کامل از Firebase Auth حذف می‌کند — همه ارائه‌دهندگان مرتبط جدا می‌شوند و دسترسی به سرویس‌های Firebase مسدود می‌شود. حذف کاربر غیرقابل بازگشت است و برای محافظت در برابر حذف غیرمجاز نیاز به احراز هویت مجدد (reauthenticate) دارد.

claimهای سفارشی و مدیریت نقش‌ها

Custom Claims ویژگی‌های سفارشی هستند که Firebase Auth به توکن JWT کاربر اضافه می‌کند. برخلاف فیلدهای استاندارد پروفایل (ایمیل، displayName)، claimها فقط در سمت سرور — از طریق Admin SDK یا از طریق قوانین Firebase Security Rules برای Firestore و Realtime Database در دسترس هستند. claimها مستقیماً برای کلاینت قابل مشاهده نیستند، اما می‌توان از طریق user.getIdTokenResult() آنها را خواند.

سناریوهای معمول استفاده

نقش‌ها و مجوزهای دسترسی — رایج‌ترین سناریوی استفاده از claimها. Admin SDK امکان تعیین نقش «admin»، «moderator» یا «premium_user» را از طریق map روی سرور فراهم می‌کند. این claimها به طور خودکار وارد توکن می‌شوند و می‌توان از آنها در Firestore Security Rules برای محدود کردن دسترسی استفاده کرد. به گفته Google (2026)، 65٪ پروژه‌های Firebase به جای سرور نقش جداگانه از custom claims برای مدیریت دسترسی به داده‌ها استفاده می‌کنند.

kotlin
// Admin SDK (Node.js) — تخصیص claimها به کاربر
const admin = require("firebase-admin")

await admin.auth().setCustomUserClaims(uid, {
    role: "premium",
    tier: "pro",
    maxProjects: 50
})

// خواندن claimها در سمت کلاینت
val claims = FirebaseAuth.getInstance()
    .currentUser?.getIdTokenResult(true)
    ?.await()?.claims

محدودیت‌های claimها

Custom claims محدودیت‌هایی دارند: حداکثر 1000 بایت برای کل شی JSON claims به ازای هر کاربر، حداکثر 20 کلید در شی. claimها برای ذخیره داده‌های پویا طراحی نشده‌اند — آنها فقط از طریق Admin SDK به‌روزرسانی می‌شوند و در زمان واقعی همگام نمی‌شوند. پس از به‌روزرسانی claimها، کاربر باید توکن را به‌روزرسانی کند (getIdTokenResult(true)) یا دوباره وارد برنامه شود. claimها در سمت کلاینت کش نمی‌شوند — هر ورود جدید توکن جاری را از سرور دریافت می‌کند.

امنیت احراز هویت

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 تجدید می‌کند.

سوالات متداول

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 از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید