write:authentication (أو read:authentication لعرض القوائم). لا تستخدم هذه العمليات token المستخدم النهائي ولا مفتاح API للتحقق. في الأمثلة، يكون MANAGEMENT_BASE كما يلي:
طريقتان للاستيراد
استيراد ملف
1. الرفع
يكون كل مفتاح
keep_* بالقيمة true ما لم ترسل false. تعيد الواجهة الاستجابة 202 مع مهمة. يحتفظ التطبيق بـ5 ملفات مرفوعة كحد أقصى في آنٍ واحد.
2. مراجعة التشغيل التجريبي
يبدأ كل رفع بتشغيل تجريبي. يتحقق هذا التشغيل من كل شخص ولا يكتب أي شيء. استعلم عنGET import-jobs/{id}/ بشكل دوري:
يعرض التشغيل التجريبي الفاشل أخطاءه. صحّح الملف وارفعه مجدداً.
3. بدء الاستيراد
يستوردPOST import-jobs/{id}/start/ ما تحقق منه التشغيل التجريبي، ويعيد 202.
- يُستورد الأشخاص على دفعات من 1,000. تُعتمد كل دفعة بشكل مستقل.
- يعمل استيراد واحد فقط لكل تطبيق في المرة الواحدة (وإلا فستظهر رسالة
import_running). - يُستأنف الاستيراد الذي انقطع بعد آخر دفعة تم اعتمادها.
- يُتخطّى الأشخاص الذين استُوردوا سابقاً، لذا يمكنك تشغيل الملف نفسه مرة أخرى.
- يتلقى الشخص الذي بدأ الاستيراد بريداً إلكترونياً عند انتهائه أو توقفه.
استيراد على دفعات
أرسل حتى 1,000 شخص في كل طلب، معidempotency_key بطول 100 حرف كحد أقصى.
- يعيد التشغيل التجريبي
200مع النتيجة، ولا يكتب أي شيء. - مع
dry_run: false، يعيد الاستيراد الناجح201. تعيد الدفعة التي تحتوي على أي خطأ400ولا تستورد أحداً. - إعادة إرسال طلب معتمد بالمفتاح نفسه تعيد نتيجته المسجلة. أما المفتاح نفسه مع محتوى مختلف فيعيد
400 {"idempotency_key": "different_payload"}. - تُرسل معاملات Firebase داخل كائن
firebase:{signer_key, salt_separator, rounds, mem_cost}. - يعرض
GET imports/الدفعات المعتمدة.
تنسيق الملف
JSON
مصفوفة من الأشخاص، أو كائن يحتوي حقلusers بهذه المصفوفة.
CSV
الأعمدة نفسها ذات القيمة المفردة، بالإضافة إلىgoogle_id وapple_id وgithub_id وmicrosoft_id وmicrosoft_tenant_id وorganization_slug وorganization_name وorganization_role. يأخذ الشخص الذي ينتمي إلى عدة مؤسسات سطراً واحداً لكل مؤسسة.
التكرارات والحسابات الموجودة
- تُدمج الأسطر ذات البريد الإلكتروني نفسه في شخص واحد. يُحسب السطر المطابق تماماً مكرراً. يُدمج السطر الذي يحتوي روابط أو مؤسسات أو تطبيق مصادقة أكثر.
- يُعد وجود تجزئتين مختلفتين لكلمة المرور، أو سرين مختلفين لتطبيق المصادقة، أو دورين مختلفين في المؤسسة لشخص واحد، خطأً. وكذلك الأمر إذا ادّعى شخصان الحقل
external_idنفسه، أو معرّف الحساب نفسه لدى المزوّد. - إذا كان هناك حساب بالبريد الإلكتروني نفسه وأنشأه استيراد سابق، يُتخطّى الشخص (
already_imported). وإذا سجّل الشخص بنفسه، يُعد ذلك خطأidentity_conflict. لا يُغيّر الاستيراد أبداً حساباً موجوداً.
كلمات المرور
تُخزَّن معاملات Firebase مشفّرةً ولهذا التطبيق وحده. أي صيغة أخرى، أو تكلفة تتجاوز هذه الحدود، تعني أن الشخص يحتاج إلى كلمة مرور جديدة. بعد أول تسجيل دخول ناجح للشخص، تعيد Didit تخزين كلمة مروره بصيغتها الخاصة.
الأشخاص بدون كلمة مرور صالحة للاستخدام
عندما لا يكون لدى الشخص تجزئة، أو تكون التجزئة غير مدعومة، تتلقى محاولة تسجيل الدخول بكلمة المرور الرد المعتاد الخاص بكلمة المرور الخاطئة. ترسل Didit إليه أيضاً بريداً إلكترونياً يحتوي على رابط لتعيين كلمة مرور جديدة (صالح لمدة 30 دقيقة، ومرة واحدة في اليوم على الأكثر). يحدث هذا فقط عندما تم التحقق من بريده الإلكتروني، ولم يُحظر الحساب، وكان تسجيل الدخول بكلمة المرور مفعّلاً. في النتيجة، يُحصيreset_required الأشخاص الذين لا يملكون كلمة مرور صالحة للاستخدام. ويُحصي reset_emails من بينهم أصحاب البريد الإلكتروني المتحقَّق منه فقط، فهم وحدهم من يمكن الوصول إليهم بهذه الطريقة. لا يستطيع الأشخاص الذين لم يتحقق من بريدهم الإلكتروني تسجيل الدخول بكلمة مرور. ومع ذلك يمكنهم تسجيل الدخول برمز يُرسل إلى بريدهم الإلكتروني إذا فعّلت هذه الطريقة.
الروابط الاجتماعية وتطبيقات المصادقة والمؤسسات
- الروابط الاجتماعية تُحتفظ بها للمزوّدين الذين سبق أن هيّأهم تطبيقك، ضمن معرّف العميل الحالي. عندها لا يحتاج تسجيل الدخول العائد إلى إثبات بالبريد الإلكتروني. معرّفات Google وGitHub عامة على مستوى العالم. أما معرّفات Apple فهي خاصة بفريق المطوّر، ومعرّفات Microsoft خاصة بتسجيل التطبيق، لذلك لا تتطابق هذه الروابط إلا إذا كانت منصتك القديمة تستخدم الفريق أو التسجيل نفسه. الروابط المرتبطة بمزوّدين لم تُهيَّئ لديك تُحسب ضمن
social_unavailableولا تُستورد. - تطبيقات المصادقة (أسرار TOTP: SHA-1، و6 أرقام، و30 ثانية) تُخزَّن مشفّرة. يجب على الأشخاص المستوردين استخدامها كعامل ثانٍ للتحقق. ولا يحصلون على رموز استرداد.
- المؤسسات التي لا وجود لها بعد تُنشأ من معرّفها المختصر.
- مفاتيح المرور لا يمكن استيرادها. فهي تنتمي إلى نطاق تسجيل الدخول القديم لديك، لذلك يضيف الأشخاص مفتاح مرور جديداً بعد أن يسجلوا الدخول عبر Didit.
النتائج
تُعيد كل عملية تشغيل تجريبي ودفعة ومهمة النتيجةresult نفسها:
لا تتضمن الاستجابات أبداً تجزئات كلمات المرور ولا الأملاح ولا أسرار تطبيقات المصادقة ولا قيم الحقول.
قبل التبديل
اختبر في تطبيقك في البيئة التجريبية:- تسجيل الدخول بكل صيغة كلمة مرور تستوردها،
- بريد تعيين كلمة مرور جديدة لشخص ليست لديه تجزئة صالحة للاستخدام،
- تسجيل الدخول الاجتماعي ورموز تطبيقات المصادقة للأشخاص المستوردين،
- تشغيل الملف نفسه مرتين.
vendor_data لكل شخص يطابق القيمة التي تستخدمها لـعمليات التحقق والمعاملات.