Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

قم بتوصيل تطبيقك بـ Authentication Emulator

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

قبل استخدام تطبيق محاكي المصادقة معك ، تأكد من فهمك لسير عمل Firebase Local Emulator Suite بشكل عام ، وأنك تقوم بتثبيت وتكوين Local Emulator Suite ومراجعة أوامر CLI الخاصة بها.

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

ماذا يمكنني أن أفعل بمحاكي المصادقة؟

يوفر محاكي المصادقة محاكاة محلية عالية الدقة لخدمات مصادقة Firebase ، مما يوفر الكثير من الوظائف الموجودة في مصادقة Firebase . عند إقرانه مع أنظمة Apple الأساسية و Android و Web Firebase SDK ، يتيح لك المحاكي:

  • إنشاء وتحديث وإدارة حسابات المستخدمين التي تمت محاكاتها لاختبار البريد الإلكتروني / كلمة المرور ورقم الهاتف / الرسائل القصيرة والرسائل النصية القصيرة متعددة العوامل ومصادقة مزود هوية الطرف الثالث (مثل Google)
  • عرض وتحرير المستخدمين الذين تمت محاكاتهم
  • نموذج أولي لأنظمة مصادقة الرموز المخصصة
  • تحقق من الرسائل المتعلقة بالمصادقة في علامة التبويب سجلات واجهة مستخدم المحاكي.

اختر مشروع Firebase

يحاكي Firebase Local Emulator Suite المنتجات لمشروع Firebase واحد.

لتحديد المشروع المراد استخدامه ، قبل بدء المحاكيات ، في CLI ، firebase use في دليل العمل الخاص بك. أو يمكنك تمرير علامة --project إلى كل أمر محاكي.

يدعم Local Emulator Suite محاكاة مشاريع Firebase الحقيقية والمشاريع التجريبية .

نوع المشروع سمات استخدم مع المحاكيات
حقيقة

مشروع Firebase الحقيقي هو المشروع الذي أنشأته وتهيئته (على الأرجح عبر وحدة تحكم Firebase).

تحتوي المشاريع الحقيقية على موارد مباشرة ، مثل طبعات قواعد البيانات أو حاويات التخزين أو الوظائف أو أي مورد آخر تقوم بإعداده لمشروع Firebase هذا.

عند العمل مع مشاريع Firebase الحقيقية ، يمكنك تشغيل برامج محاكاة لأي من المنتجات المدعومة أو جميعها.

بالنسبة إلى أي منتجات لا تقوم بمحاكاتها ، ستتفاعل تطبيقاتك وأكوادك مع المورد المباشر (مثيل قاعدة البيانات ، دلو التخزين ، الوظيفة ، إلخ).

تجريبي

لا يحتوي مشروع Firebase التجريبي على تهيئة Firebase حقيقية ولا موارد مباشرة. يتم الوصول إلى هذه المشاريع عادةً عبر مختبرات الرموز أو البرامج التعليمية الأخرى.

معرفات المشروع للمشاريع التجريبية لها demo- التجريبية.

عند العمل مع مشروعات Firebase التجريبية ، لا تتفاعل تطبيقاتك وأكوادك مع المحاكيات فقط . إذا حاول تطبيقك التفاعل مع مورد لا يعمل المحاكي من أجله ، فسيفشل هذا الرمز.

نوصيك باستخدام المشاريع التجريبية حيثما أمكن ذلك. الفوائد تشمل:

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

صك تطبيقك للتحدث إلى المحاكي

Android و iOS و Web SDK

قم بإعداد التكوين داخل التطبيق أو فصول الاختبار للتفاعل مع محاكي المصادقة على النحو التالي.

ذكري المظهر
FirebaseAuth.getInstance().useEmulator("10.0.2.2", 9099);
سويفت
Auth.auth().useEmulator(withHost:"localhost", port:9099)

Web version 9

import { getAuth, connectAuthEmulator } from "firebase/auth";

const auth = getAuth();
connectAuthEmulator(auth, "http://localhost:9099");

Web version 8

const auth = firebase.auth();
auth.useEmulator("http://localhost:9099");

ليست هناك حاجة إلى أي إعداد إضافي لنموذج أولي واختبار التفاعلات بين المصادقة ووظائف السحابة أو قواعد أمان Firebase لـ Cloud Firestore أو Realtime Database. عند تكوين محاكي المصادقة وتشغيل المحاكيات الأخرى ، فإنها تعمل معًا تلقائيًا.

SDKs للمشرف

تتصل مجموعات Firebase Admin SDK تلقائيًا بمحاكي المصادقة عند تعيين متغير البيئة FIREBASE_AUTH_EMULATOR_HOST .

export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"

لاحظ أن محاكي Cloud Functions يدرك تلقائيًا محاكي المصادقة حتى تتمكن من تخطي هذه الخطوة عند اختبار التكامل بين وظائف السحابة ومحاكيات المصادقة. سيتم تعيين متغير البيئة تلقائيًا لـ Admin SDK في وظائف السحابة.

مع مجموعة متغيرات البيئة ، ستقبل حزم SDK الخاصة بمشرف createSessionCookie verifyIdToken التوالي) لتسهيل التطوير المحلي والاختبار. يرجى التأكد من عدم ضبط متغير البيئة في الإنتاج.

إذا كنت تريد أن يتصل كود Admin SDK بمحاكي مشترك يعمل في بيئة أخرى ، فستحتاج إلى تحديد نفس معرف المشروع الذي قمت بتعيينه باستخدام Firebase CLI . يمكنك تمرير معرف المشروع initializeApp التطبيق مباشرة أو تعيين متغير البيئة GCLOUD_PROJECT .

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
متغيرات البيئة
export GCLOUD_PROJECT="your-project-id"

رموز الهوية

لأسباب تتعلق بالأمان ، يُصدر محاكي المصادقة رموزًا مميزة للمعرف غير موقعة ، والتي لا يتم قبولها إلا من قِبل محاكيات Firebase الأخرى ، أو Firebase Admin SDK عند تكوينها . سيتم رفض هذه الرموز المميزة من خلال خدمات Firebase للإنتاج أو Firebase Admin SDK التي تعمل في وضع الإنتاج (على سبيل المثال ، السلوك الافتراضي بدون خطوات الإعداد الموضحة أعلاه).

ابدأ المحاكي

يمكنك استخدام محاكي المصادقة بشكل تفاعلي عبر Emulator Suite UI وغير تفاعلي من خلال واجهة REST المحلية الخاصة به. تغطي الأقسام التالية حالات الاستخدام التفاعلي وغير التفاعلي.

لبدء محاكي المصادقة وواجهة REST الخاصة به وواجهة مستخدم Emulator Suite ، قم بتنفيذ ما يلي:

firebase emulators:start

للمصادقة المجهولة ، يمكن لتطبيقك ممارسة منطق تسجيل الدخول لمنصتك ( iOS ، Android ، الويب ).

لمصادقة البريد الإلكتروني / كلمة المرور ، يمكنك البدء في إنشاء النماذج الأولية عن طريق إضافة حسابات مستخدمين إلى محاكي المصادقة من تطبيقك باستخدام أساليب المصادقة SDK ، أو باستخدام واجهة مستخدم Emulator Suite.

  1. في واجهة مستخدم Emulator Suite ، انقر فوق علامة التبويب المصادقة .
  2. انقر فوق الزر " إضافة مستخدم ".
  3. اتبع معالج إنشاء حساب المستخدم ، وملء حقول مصادقة البريد الإلكتروني.

من خلال إنشاء مستخدم تجريبي ، يمكن لتطبيقك تسجيل دخول المستخدم والخروج منه باستخدام منطق SDK لمنصتك ( iOS ، Android ، الويب ).

لاختبار التحقق من البريد الإلكتروني / تسجيل الدخول باستخدام تدفقات ارتباط البريد الإلكتروني ، يقوم المحاكي بطباعة عنوان URL إلى الجهاز الطرفي الذي تم عنده تنفيذ برامج firebase emulators:start .

i  To verify the email address customer@ex.com, follow this link:
http://localhost:9099/emulator/action?mode=verifyEmail&lang=en&oobCode=XYZ123&apiKey=fake-api-key

الصق الرابط في متصفحك لمحاكاة حدث التحقق ، وتحقق مما إذا كان التحقق قد نجح أم لا.

{
  "authEmulator": {
    "success": "The email has been successfully verified.",
    "email": "customer@example.com"
  }
}

لاختبار إعادة تعيين كلمة المرور ، يقوم المحاكي بطباعة عنوان URL مشابه ، بما في ذلك معلمة كلمة المرور الجديدة (والتي يمكنك تغييرها حسب الحاجة) ، إلى الجهاز.

http://localhost:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD

اختبار غير تفاعلي

بدلاً من استخدام واجهة مستخدم Emulator Suite أو رمز العميل لإدارة حسابات مستخدم البريد الإلكتروني / كلمة المرور ، يمكنك كتابة نصوص إعداد اختبار تستدعي REST APIs لإنشاء حسابات مستخدمين وحذفها وجلب رموز التحقق من البريد الإلكتروني خارج النطاق لملء التحقق من البريد الإلكتروني للمحاكي URL. هذا يبقي النظام الأساسي وكود الاختبار منفصلين ويتيح لك الاختبار غير التفاعلي.

بالنسبة إلى تدفقات اختبار البريد الإلكتروني وكلمة المرور غير التفاعلية ، يكون التسلسل النموذجي على النحو التالي.

  1. أنشئ مستخدمين بنقطة نهاية REST لتسجيل المصادقة.
  2. سجّل دخول المستخدمين باستخدام رسائل البريد الإلكتروني وكلمات المرور لإجراء الاختبارات.
  3. إذا كان ذلك ممكنًا على اختباراتك ، فاحصل على رموز التحقق من البريد الإلكتروني المتاحة خارج النطاق من REST endpont الخاص بالمحاكي .
  4. مسح سجلات المستخدم بنقطة نهاية REST الخاصة بالمحاكي لمسح البيانات.

تمت محاكاة مصادقة الهاتف / الرسائل القصيرة

لمصادقة الهاتف ، لا يدعم محاكي المصادقة:

  • تدفقات reCAPTCHA و APN. بمجرد تكوينها للتفاعل مع المحاكي ، تقوم مجموعات SDK للعميل بتعطيل طرق التحقق هذه بطريقة مشابهة لتلك الموصوفة لاختبار التكامل ( iOS ، Android ، الويب ).
  • اختبر أرقام الهواتف باستخدام الرموز المكونة مسبقًا في وحدة تحكم Firebase.

بخلاف ذلك ، من حيث رمز العميل ، يتطابق تدفق مصادقة الهاتف / الرسائل القصيرة مع ذلك الموصوف للإنتاج ( iOS ، Android ، الويب ).

استخدام واجهة مستخدم Emulator Suite:

  1. في واجهة مستخدم Emulator Suite ، انقر فوق علامة التبويب المصادقة .
  2. انقر فوق الزر " إضافة مستخدم ".
  3. اتبع معالج إنشاء حساب المستخدم ، وملء حقول مصادقة الهاتف.

ومع ذلك ، بالنسبة لتدفقات مصادقة الهاتف ، لن يقوم المحاكي بتشغيل تسليم أي رسائل نصية ، نظرًا لأن الاتصال بشركة الاتصالات خارج النطاق وغير مناسب للاختبار المحلي! بدلاً من ذلك ، يقوم المحاكي بطباعة الكود الذي كان سيتم إرساله عبر الرسائل القصيرة إلى نفس الجهاز الذي قمت بتشغيل firebase emulators:start ؛ أدخل هذا الرمز في التطبيق لمحاكاة فحص المستخدمين لرسائلهم النصية.

اختبار غير تفاعلي

لاختبار مصادقة الهاتف غير التفاعلي ، استخدم واجهة برمجة تطبيقات REST لمحاكي المصادقة لاسترداد رموز SMS المتاحة. لاحظ أن الكود يختلف في كل مرة تبدأ فيها التدفق.

التسلسل النموذجي هو على النحو التالي.

  1. منصة الاتصال signInWithPhoneNumber لبدء عملية التحقق.
  2. استرجع رمز التحقق باستخدام نقطة نهاية REST الخاصة بالمحاكي .
  3. confirmationResult.confirm(code) كالمعتاد مع رمز التحقق.

رسائل SMS متعددة العوامل

يدعم محاكي المصادقة النماذج الأولية واختبار تدفقات المصادقة متعددة العوامل SMS (MFA) المتوفرة في الإنتاج لنظام التشغيل iOS و Android والويب .

عند إضافة مستخدم وهمي إلى المحاكي ، يمكنك تمكين MFA وتكوين رقم هاتف واحد أو أكثر سيتم إرسال رسائل SMS إلى العامل الثاني. يتم إخراج الرسائل إلى نفس المحطة التي قمت بتشغيل firebase emulators:start ، ومتاحة من واجهة REST.

تمت محاكاة مصادقة موفر هوية الطرف الثالث (IDP)

يتيح لك محاكي المصادقة اختبار العديد من تدفقات مصادقة الجهات الخارجية في تطبيقات iOS أو Android أو الويب دون أي تغييرات من رمز الإنتاج. للحصول على أمثلة لتدفقات المصادقة ، راجع الوثائق الخاصة بمجموعات مختلفة من المزودين والأنظمة الأساسية التي يمكنك استخدامها في تطبيقك .

بشكل عام ، يمكنك استخدام Firebase SDK للمصادقة بإحدى طريقتين:

  • يتيح تطبيقك لـ SDK معالجة العملية بالكامل من البداية إلى النهاية ، بما في ذلك جميع التفاعلات مع موفري IDP التابعين لجهات خارجية لاسترداد بيانات الاعتماد.
  • يسترد تطبيقك بيانات الاعتماد يدويًا من موفر تابع لجهة خارجية باستخدام SDK لهذا الطرف ويمرر بيانات الاعتماد هذه إلى Authentication SDK.

مرة أخرى ، تحقق من رابط التوثيق أعلاه وتأكد من أنك على دراية بأي تدفق - إدارة Firebase SDK مقابل استرداد بيانات الاعتماد يدويًا - الذي تريد استخدامه. يدعم محاكي المصادقة اختبار أي من الأسلوبين.

اختبار تدفقات IDP التي تعتمد على Firebase SDK

إذا كان تطبيقك يستخدم أي تدفق من طرف إلى طرف Firebase SDK ، مثل OAuthProvider لتسجيل الدخول باستخدام Microsoft أو GitHub أو Yahoo ، لإجراء اختبار تفاعلي ، فإن محاكي المصادقة يقدم إصدارًا محليًا من صفحة تسجيل الدخول المقابلة لمساعدتك في الاختبار المصادقة من تطبيقات الويب التي تستدعي طريقة signinWithPopup أو signInWithRedirect . تظهر صفحة تسجيل الدخول التي يتم تقديمها محليًا أيضًا في تطبيقات الأجهزة المحمولة ، والتي تقدمها مكتبة عرض الويب في النظام الأساسي الخاص بك.

ينشئ المحاكي حسابات مستخدمين وبيانات اعتماد وهمية لجهات خارجية حسب الحاجة مع استمرار التدفقات.

يتدفق اختبار IDP مع استرجاع بيانات الاعتماد يدويًا

إذا كنت تستخدم تقنيات تسجيل الدخول "يدويًا" واستدعت طريقة signInWithCredentials الخاصة بمنصتك ، فسيطلب تطبيقك ، كالعادة ، تسجيل دخول حقيقي لجهة خارجية واسترداد بيانات اعتماد حقيقية من جهة خارجية.

لاحظ أن المحاكي يدعم فقط مصادقة signInWithCredential الاعتماد المستردة من Google Sign-In و Apple والموفرين الآخرين الذين يستخدمون رموز ID المميزة المطبقة على شكل JSON Web Tokens (JWTs). رموز الوصول (على سبيل المثال تلك التي يوفرها Facebook أو Twitter ، والتي ليست JWTs) غير مدعومة. يناقش القسم التالي بديلًا في هذه الحالات.

اختبار غير تفاعلي

تتمثل إحدى طرق الاختبار غير التفاعلي في أتمتة نقرات المستخدم على صفحة تسجيل الدخول التي يقدمها المحاكي. بالنسبة لتطبيقات الويب ، استخدم واجهة تحكم مثل WebDriver. للجوال ، استخدم أدوات اختبار واجهة المستخدم من النظام الأساسي الخاص بك ، مثل Espresso أو Xcode.

بدلاً من ذلك ، يمكنك تحديث الكود الخاص بك لاستخدام signInWithCredential (على سبيل المثال في فرع الكود) واستخدام تدفق مصادقة رمزية مع رموز معرف وهمية للحسابات بدلاً من بيانات الاعتماد الحقيقية.

  1. إعادة الأسلاك أو التعليق على جزء من الكود الخاص بك الذي يسترد idTokens من IDP ؛ هذا يزيل الحاجة إلى إدخال أسماء مستخدمين وكلمات مرور حقيقية أثناء اختباراتك ، ويخفف اختباراتك من حصص API وحدود المعدل في IDP.
  2. ثانيًا ، استخدم سلسلة JSON حرفية بدلاً من الرمز المميز لـ signInWithCredential . باستخدام web SDK كمثال ، يمكنك تغيير الرمز إلى:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

عند استخدامه مع المحاكي ، سيقوم هذا الرمز بنجاح بمصادقة مستخدم بالبريد الإلكتروني foo@example.com على Google. فكر في الحقل الفرعي كمفتاح أساسي ، يمكن تغييره إلى أي سلسلة ، مما يسخر من تسجيل الدخول إلى مستخدمين مختلفين. يمكنك استبدال firebase.auth.GoogleAuthProvider ، على سبيل المثال ، بـ new firebase.auth.OAuthProvider('yahoo.com') أو أي معرف مزود آخر تريد السخرية منه.

تمت محاكاة مصادقة الرمز المخصص

يعالج محاكي المصادقة المصادقة باستخدام رموز ويب JSON المخصصة باستخدام استدعاءات أسلوب signInWithCustomToken على الأنظمة الأساسية المدعومة ، كما هو موضح في وثائق مصادقة الإنتاج .

كيف يختلف محاكي المصادقة عن الإنتاج

يحاكي محاكي Firebase Authentication العديد من ميزات منتج الإنتاج. ومع ذلك ، نظرًا لأن أي نوع من أنظمة المصادقة يعتمد بشكل كبير على الأمان على مستويات متعددة (الجهاز ، وموفرو الطرف الثالث ، و Firebase ، وما إلى ذلك) ، فمن الصعب على المحاكي إعادة إنشاء جميع التدفقات بشكل صحيح.

سحابة IAM

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

نظرًا لأنه على الأنظمة الأساسية للجوّال ، يعتمد تسجيل الدخول إلى رابط البريد الإلكتروني على روابط Firebase الديناميكية ، سيتم فتح جميع هذه الروابط على منصة الويب (للجوّال).

تسجيل دخول الطرف الثالث

بالنسبة إلى تدفقات تسجيل الدخول لجهات خارجية ، تعتمد مصادقة Firebase على بيانات اعتماد آمنة من مزودي الطرف الثالث مثل Twitter و Github.

يتم قبول بيانات الاعتماد الحقيقية من موفري OpenID Connect مثل Google و Apple بواسطة محاكي المصادقة. لا يتم دعم بيانات الاعتماد من موفري غير OpenID Connect.

تسجيل الدخول عبر البريد الإلكتروني / الرسائل القصيرة

في تطبيقات الإنتاج ، تتضمن تدفقات تسجيل الدخول إلى البريد الإلكتروني والرسائل النصية القصيرة عملية غير متزامنة يتحقق فيها المستخدم من رسالة مستلمة ويُدخل رمز تسجيل الدخول في واجهة تسجيل الدخول. لا يرسل محاكي المصادقة أي رسائل بريد إلكتروني أو رسائل SMS ، ولكن كما هو موضح أعلاه ، يقوم بإنشاء رموز تسجيل الدخول وإخراجها إلى الجهاز لاستخدامها في الاختبار.

لا يدعم المحاكي القدرة على تحديد أرقام هواتف اختبارية برموز تسجيل دخول ثابتة كما يمكن القيام به باستخدام وحدة تحكم Firebase.

مصادقة الرمز المخصص

لا يتحقق محاكي المصادقة من صحة التوقيع أو انتهاء صلاحية الرموز المميزة المخصصة. يتيح لك ذلك استخدام الرموز المميزة المصنوعة يدويًا وإعادة استخدام الرموز المميزة إلى أجل غير مسمى في سيناريوهات النماذج الأولية والاختبار.

معدل الحد / مكافحة سوء الاستخدام

لا يقوم محاكي المصادقة بتكرار الحد من معدل الإنتاج أو ميزات مكافحة إساءة الاستخدام.

ماذا بعد؟