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 هي خدمة مصادقة خلفية من Google مقدمة كجزء من Firebase SDK. تتولى جميع منطق إدارة الحسابات من جانب الخادم: تخزين تجزئات كلمات المرور، إنشاء رموز JWT، ومعالجة تدفقات OAuth 2.0 وOpenID Connect. لا يحتاج المطورون إلى نشر خادم المصادقة الخاص بهم، أو إدارة رموز التحديث، أو تنفيذ بروتوكولات التحقق — Firebase تفعل كل شيء.

هندسة الخدمة

يستخدم Firebase Auth هندسة موحدة مع مخزن مستخدمين موحد. يحصل كل مستخدم على معرف فريد (UID) لا يعتمد على مزود تسجيل الدخول. عند التسجيل عبر Google والبريد الإلكتروني، يتم إنشاء مستخدم واحد بحسابين مرتبطين (مزودين). يتولى Firebase تلقائيًا ربط الحسابات من جانب العميل دون طلبات إضافية للخادم.

رموز Firebase Auth هي JWT (JSON Web Token) مع حمولة تحتوي على UID ووقت الإصدار ووقت الانتهاء والـ claims المخصصة. تعيش رموز الوصول لمدة ساعة واحدة، ورموز التحديث غير محدودة (ولكن يمكن إلغاؤها عبر وحدة التحكم الإدارية). يقوم SDK تلقائيًا بتحديث الرمز المميز عند كل طلب HTTP لخدمات Firebase. وفقًا لـ Google (2026)، يعالج Firebase Auth أكثر من 500 مليون مصادقة يوميًا.

التسعير والحدود

Firebase Auth مجاني تمامًا على خطة Spark (المجانية) وخطة Blaze (الدفع حسب الاستخدام). الحد الوحيد هو 10 آلاف مصادقة مجهولة يوميًا على Spark (غير محدود على Blaze). لا توجد حدود لمصادقات البريد الإلكتروني/الهاتف وOAuth. للتحقق عبر الهاتف، توفر Spark 10 آلاف تحقق شهريًا، بينما تفرض Blaze رسومًا حسب الاستخدام ($0.01 لكل تحقق بعد أول 10 آلاف). هذا يجعل Firebase Auth واحدًا من أكثر الحلول المتاحة تكلفة.

مزودو مصادقة Firebase Auth

Firebase Auth يدعم 12 مزود مصادقة مباشرة. يتم تنفيذ كل مزود كخدمة هوية منفصلة مع تدفق محدد مسبقًا — يحتاج المطور فقط إلى إنشاء كائن Credential وتمريره إلى signInWithCredential. يحدد Firebase تلقائيًا ما إذا كان المستخدم جديدًا أم موجودًا، وفي حالة ازدواج البريد الإلكتروني، يعرض ربط الحسابات.

البريد الإلكتروني وكلمة المرور

Email/Password هي طريقة المصادقة الأساسية مع تخزين تجزئات كلمات المرور (bcrypt) على خوادم Firebase. تدعم التسجيل وتسجيل الدخول وإعادة تعيين كلمة المرور عبر البريد الإلكتروني وتأكيد البريد الإلكتروني. يتحقق Firebase تلقائيًا من قوة كلمة المرور (6 أحرف كحد أدنى) ويمكنه حظر تسجيل الدخول بعد N محاولات فاشلة (حماية من القوة الغاشمة).

المزودون الاجتماعيون

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). بعد ذلك، يكون كائن FirebaseAuth متاحًا عبر الطريقة الثابتة getInstance() — كائن فردي للتطبيق بأكمله. لا حاجة لتكوين إضافي.

groovy
// 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 هي الطريقة الرئيسية للتسجيل. تأخذ بريدًا إلكترونيًا وكلمة مرور، وتنشئ مستخدمًا في 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. يتحقق Firebase من الرمز المميز على خادمه (يتحقق من التوقيع باستخدام مفتاح RSA الخاص بـ Google) وينشئ أو يعيد المستخدم الموجود. لا تتطلب العملية تخزين سر على العميل — تتم جميع المصادقة من خلال التحقق المشفر للرموز المميزة.

إدارة المستخدمين والجلسات

Firebase Auth يدير تلقائيًا دورة حياة الجلسة. بعد تسجيل الدخول، يحفظ SDK رمز التحديث في التخزين المحلي، وعند كل إعادة تشغيل للتطبيق، يستعيد الجلسة عبر تسجيل الدخول الصامت. لا يحتاج المطورون إلى تنفيذ تخزين الرمز المميز أو معالجة انتهاء الصلاحية أو التحديث — Firebase Auth SDK يفعل كل شيء.

المستخدم الحالي

FirebaseAuth.getInstance().currentUser يعيد كائن FirebaseUser إذا كانت الجلسة نشطة، أو null إذا قام المستخدم بتسجيل الخروج. يحتوي FirebaseUser على UID والبريد الإلكتروني وdisplayName وphotoUrl وphoneNumber وproviderData وقائمة الـ claims. بعد تحديثات الملف الشخصي (updateProfile)، تتم مزامنة التغييرات مع الخادم تلقائيًا. يتم تخزين كائن FirebaseUser مؤقتًا في الذاكرة ويتم تحديثه عند أي عمليات مصادقة.

المصادقة المجهولة

signInAnonymously ينشئ مستخدمًا مؤقتًا بدون تسجيل. المستخدمون المجهولون لديهم UID ولكن ليس لديهم بريد إلكتروني أو اسم أو مزود. هذا مفيد للتطبيقات حيث المحتوى متاح قبل التسجيل (سلة التسوق، المفضلات، السجل). عندما يقرر المستخدم التسجيل، يتم ربط الحساب المجهول بحساب دائم عبر linkWithCredential. على خطة Spark، هناك حد 10 آلاف مصادقة مجهولة يوميًا.

وفقًا لـ Google (2026)، حوالي 40% من المستخدمين يبدؤون استخدام التطبيق بشكل مجهول، و 25% منهم يربطون لاحقًا حسابهم المجهول بحساب دائم. هذا يعني أن المصادقة المجهولة لا تفقد البيانات عند تحويل المستخدم إلى مستخدم مسجل.

تسجيل الخروج وحذف الحساب

طريقة signOut() تمسح الجلسة المحلية وتزيل الرمز المميز المحفوظ. بعد استدعاء signOut، يصبح currentUser فارغًا. طريقة delete() تزيل حساب المستخدم بالكامل من Firebase Auth — يتم فصل جميع المزودين المرتبطين، ويتم حظر الوصول إلى خدمات Firebase. حذف المستخدم لا رجعة فيه ويتطلب إعادة المصادقة للحماية من حذف الحساب غير المصرح به.

الـ 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 تستخدم الـ 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

الـ claims المخصصة لها قيود: حد أقصى 1000 بايت لكائن JSON بالكامل للـ claims لكل مستخدم، ولا يزيد عن 20 مفتاحًا في الكائن. الـ claims غير مصممة لتخزين البيانات الديناميكية — يتم تحديثها فقط عبر Admin SDK ولا تتم مزامنتها في الوقت الفعلي. بعد تحديث الـ claims، يجب على المستخدم تحديث الرمز المميز (getIdTokenResult(true)) أو إعادة تسجيل الدخول إلى التطبيق. الـ claims لا يتم تخزينها مؤقتًا على العميل — كل تسجيل دخول جديد يتلقى رمزًا مميزًا محدثًا من الخادم.

أمان المصادقة

Firebase Auth ينفذ حماية متعددة المستويات للحسابات: تشفير حركة المرور (TLS 1.3)، تجزئة كلمات المرور (bcrypt، تكلفة 10)، حماية من القوة الغاشمة مع 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 الخاص بك) دون تكرار قاعدة بيانات المستخدمين. الرمز المميز يعيش لمدة ساعة واحدة، وبعدها يقوم 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 — التخزين والتحديث واستعادة الجلسة عند إعادة التشغيل.
  • الـ claims المخصصة عبر Admin SDK تمكن نموذج وصول قائم على الأدوار بدون خادم منفصل.
  • المصادقة المجهولة توفر UID مؤقتًا يمكن ربطه لاحقًا بحساب دائم.
  • الدمج في Android يتطلب تبعية واحدة — firebase-auth-ktx — بدون تكوين إضافي.
  • تتضمن الخدمة حماية مدمجة ضد القوة الغاشمة وتعداد البريد الإلكتروني والحظر التلقائي للحسابات المشبوهة.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا