كيفية إضافة المصادقة الثنائية إلى تطبيقك
لإضافة المصادقة الثنائية (2FA) إلى تطبيقك، دع المستخدمين يربطون تطبيق مصادقة بمسح رمز QR، واطلب الرمز المكون من ستة أرقام الذي يعرضه بعد كلمة المرور، ولا تُنشئ جلسة كاملة على الخادم إلا بعد أن يتحقق هذا الرمز. امنح كل مستخدم رموز استرداد لمرة واحدة عند التفعيل، وحدّ من عدد الرموز التي يستطيع أحد تخمينها، واطلب كلمة المرور مع رمز حالي قبل إمكانية إيقاف 2FA. وإذا كنت تستخدم مزوّد مصادقة مستضافاً، فشغّل خيار المصادقة متعددة العوامل المدمج فيه بدلاً من بناء خاصتك.
يشرح هذا الدليل الخيارات، والتدفق الدقيق، ومطالبات تعطيها لمنشئ التطبيقات بالذكاء الاصطناعي، والأخطاء التي تجعل 2FA يبدو موجوداً لكنه لا يفعل شيئاً. وإذا كان المفهوم جديداً عليك، فابدأ بـما هي المصادقة الثنائية.
قبل أن تبدأ: تحتاج إلى تسجيل دخول يعمل
تعمل المصادقة الثنائية فوق تسجيل دخول موجود. تحتاج إلى أحد هذين أولاً:
- تسجيل دخول خاص بك، مع مستخدمين وكلمات مرور مجزّأة مخزّنة في قاعدة بيانات تطبيقك.
- مزوّد مصادقة مستضاف يدير المستخدمين عنك.
إذا لم يكن لديك أيٌّ منهما بعد، فابدأ بـكيفية إضافة تسجيل الدخول إلى تطبيقك. ويفترض بقية هذا الدليل أن خطوة كلمة المرور تعمل بالفعل.
اختر العامل الثاني
| الطريقة | جهد المستخدم | الأمان | تكلفة التشغيل | افتراضي جيد؟ |
|---|---|---|---|---|
| تطبيق مصادقة (TOTP) | امسح رمز QR مرة واحدة، واكتب رمزاً عند الدخول | جيد؛ قابل للتصيّد إذا طلب موقع مزيف الرمز | مجاني | نعم، لمعظم التطبيقات |
| مفتاح مرور (passkey) أو مفتاح أمان | المس أو استخدم بصمة الإصبع | الأقوى؛ يقاوم التصيّد | مجاني | نعم، إذا كان مستخدموك مرتاحين له |
| رمز بالبريد الإلكتروني | تفقّد صندوق الوارد عند الدخول | قوي بقدر حساب البريد نفسه | تكاليف إرسال البريد | كخيار احتياطي فقط |
| رمز بالرسائل النصية SMS | انتظر رسالة نصية | الأضعف؛ استبدال SIM والتصيّد | رسوم لكل رسالة | فقط إذا لم يستطع المستخدمون استخدام تطبيق |
TOTP تعني كلمة المرور لمرة واحدة المعتمدة على الوقت (time-based one-time password)، وهي المعيار (RFC 6238) الذي تستخدمه تطبيقات المصادقة. يتشارك خادمك وهاتف المستخدم سراً؛ ويولّد كل منهما الرمز القصير نفسه من هذا السر والوقت الحالي، ويتغير عادةً كل 30 ثانية. لا يحتاج الأمر إلى اتصال بالشبكة ولا إلى مزوّد رسائل نصية.
مفاتيح المرور (Passkeys) تحل محل كلمات المرور أو تكملها بمفتاح تشفيري مخزّن على جهاز المستخدم. وهي أقوى لكنها تحتاج إلى عمل أكبر لبنائها بنفسك، لذلك تبدأ كثير من التطبيقات بـ TOTP وتضيف مفاتيح المرور لاحقاً، أو تحصل عليها من مزوّد مصادقة.
هل تبنيها بنفسك أم تشغّلها؟
| الأسلوب | الإيجابيات | السلبيات |
|---|---|---|
| المصادقة متعددة العوامل لدى مزوّد مستضاف | كود أقل؛ والمزوّد يصون تفاصيل الأمان | تكلفة شهرية مع النمو؛ وأنت تعتمد على خيارات المزوّد |
| TOTP خاص بك باستخدام مكتبة | تحكم كامل؛ دون رسوم لكل مستخدم | أنت مسؤول عن الحالات الحدّية: القفل، والاسترداد، وتخزين السر |
تحقق من الوثائق الحالية لمزوّدك لمعرفة العوامل التي يدعمها وعلى أي خطط. وفي كلتا الحالتين، لا تكتب أبداً رياضيات توليد الرموز بنفسك؛ استخدم مكتبة معروفة على نطاق واسع.
حدد السياسة أولاً
أجب عن هذه الأسئلة قبل كتابة المطالبات، لأنها تغيّر التصميم:
- من يجب أن يستخدمها؟ اختيارية للجميع، أو مطلوبة للمديرين والموظفين، أو مطلوبة للجميع. ومن الشائع اشتراطها لأي شخص لديه صلاحيات إدارية. انظر التحكم بالوصول القائم على الأدوار.
- كم مرة يعيد المستخدمون إدخال رمز؟ عند كل تسجيل دخول، أو مرة لكل جهاز لمدة 30 يوماً ("تذكّر هذا الجهاز").
- أي إجراءات تحتاج إلى تحقق جديد؟ تغيير البريد الإلكتروني، أو بيانات الصرف، أو إيقاف 2FA أمثلة جيدة. ويسمى هذا المصادقة عند التصعيد (step-up authentication).
- ما عملية فقدان الهاتف؟ رموز الاسترداد، مع احتياطي يدوي تكون مستعداً لتشغيله.
خطوة بخطوة: 2FA عبر TOTP على تسجيل دخولك الخاص
1. خزّن الحقول الصحيحة
يحتاج كل مستخدم إلى: هل 2FA مفعّل، وسر TOTP (مشفّر أثناء التخزين، لا نص عادي)، ووقت التفعيل، وقائمة برموز الاسترداد مخزّنة مجزّأة (hashed)، تماماً مثل كلمات المرور. وأضف مكاناً لعد المحاولات الفاشلة.
2. التسجيل
- يفتح المستخدم الإعدادات وينقر على تفعيل المصادقة الثنائية.
- يولّد الخادم سراً جديداً ويعيده كرمز QR، إضافة إلى النص للأشخاص الذين لا يستطيعون المسح.
- يمسحه المستخدم في تطبيق مصادقة ويكتب الرمز الحالي.
- يتحقق الخادم من الرمز. فقط إذا كان صحيحاً يحفظ السر ويعلّم 2FA كمفعّل.
- يعرض التطبيق 8 إلى 10 رموز استرداد مرة واحدة ويطلب من المستخدم حفظها.
الخطوة 4 مهمة: تفعيل 2FA قبل تأكيد رمز يقفل أي شخص فشل مسحه.
3. تسجيل الدخول بخطوة ثانية
- يرسل المستخدم البريد الإلكتروني وكلمة المرور. يتحقق منهما الخادم.
- إذا كان 2FA مفعّلاً، فالخادم لا يُنشئ جلسة كاملة. بل يُنشئ حالة قصيرة الأمد باسم "العامل الثاني قيد الانتظار".
- يعرض التطبيق شاشة الرمز. يتحقق الخادم من الرمز، مع هامش صغير للانحراف في الساعة.
- فقط عندئذٍ يصدر الخادم الجلسة الحقيقية.
يجب أن ترفض كل مسار محمي ونقطة نهاية في الواجهة البرمجية حالة الانتظار. فشاشة 2FA التي تخفي الصفحات فقط في المتصفح يمكن تجاوزها باستدعاء الواجهة البرمجية مباشرة.
4. الحدود والتنبيهات
رمز من ستة أرقام له مليون احتمال، وهو قابل للتخمين دون حدود. حدّد عدد المحاولات، واقفل الخطوة الثانية لفترة بعد إخفاقات متكررة، وأرسل بريداً إلكترونياً للمستخدم عند حدوث ذلك. انظر تحديد المعدل (rate limiting) وإرسال البريد الإلكتروني من تطبيقك.
5. الاسترداد وإيقاف التفعيل
- يعمل رمز الاسترداد مرة واحدة، ثم يُحذف.
- إيقاف 2FA يتطلب كلمة المرور و رمزاً حالياً أو رمز استرداد.
- إعادة توليد رموز الاسترداد تُبطل المجموعة القديمة.
- أرسل بريداً إلكترونياً للمستخدم كلما فُعّلت المصادقة الثنائية أو أُوقفت.
مطالبات تعطيها لمنشئ التطبيقات بالذكاء الاصطناعي
ابدأ بالتدفق الأساسي:
أضف مصادقة ثنائية اختيارية باستخدام تطبيقات المصادقة (TOTP) إلى تسجيل الدخول الحالي بالبريد الإلكتروني وكلمة المرور. استخدم مكتبة TOTP معروفة، ولا تكتب الخوارزمية بنفسك. في الإعدادات، اعرض رمز QR والسر النصي، ولا تفعّل 2FA إلا بعد أن يدخل المستخدم رمزاً صحيحاً. خزّن السر مشفّراً ولا تعرضه مرة أخرى بعد الإعداد. اعرض 10 رموز استرداد لمرة واحدة مرة واحدة، وخزّنها مجزّأة.
ثم التطبيق، وهنا يقصر الكود المولّد غالباً:
فرض 2FA على الخادم. بعد كلمة مرور صحيحة، يحصل المستخدمون الذين فعّلوا 2FA على حالة انتظار قصيرة الأمد، وليس على جلسة كاملة. يجب أن ترفض كل صفحة محمية ومسار واجهة برمجية حالة الانتظار. حدّد محاولات الرمز بـ 5، ثم اقفل الخطوة الثانية لمدة 15 دقيقة وأرسل بريداً إلكترونياً للمستخدم.
ثم السياسة:
اطلب 2FA لحسابات المديرين: المدير الذي ليس لديه 2FA يُوجَّه إلى الإعداد ولا يستطيع الوصول إلى لوحة التحكم حتى ينتهي منه. اطلب كلمة المرور ورمزاً حالياً لإيقاف 2FA أو لتغيير بريد الحساب. أرسل بريداً إلكترونياً للمستخدم عند تفعيل المصادقة الثنائية أو إيقافها.
أخيراً، اطلب من الوكيل شرح ما بناه:
اذكر كل مسار يتحقق من اكتمال العامل الثاني، وأين يُخزَّن سر TOTP ورموز الاسترداد، وكيف تُحمى.
أخطاء شائعة
- إصدار الجلسة بعد كلمة المرور. أخطر خلل. إذا وُجدت الجلسة الكاملة قبل فحص الرمز، تصبح المصادقة الثنائية مجرد زينة. اختبر بالاستدعاء المباشر لواجهة محمية بعد خطوة كلمة المرور فقط.
- عدم وجود حد للمحاولات. التخمينات غير المحدودة تجعل الرمز عرضة للقوة الغاشمة (brute force).
- أسرار أو رموز استرداد بنص عادي. تسريب قاعدة البيانات يسلّم العامل الثاني لكل شخص.
- التفعيل قبل التحقق. المستخدمون الذين أخطأوا في المسح يُقفل عليهم في تسجيل الدخول التالي.
- عدم وجود مسار استرداد. كل هاتف مفقود يتحول إلى تذكرة دعم أو عميل خسرته.
- إيقاف سهل. إذا استطاعت جلسة مسروقة إيقاف 2FA دون رمز، فقد زالت الحماية.
- رموز في السجلات. تأكد من ألا تظهر الرموز والأسرار أبداً في سجلات الخادم أو رسائل الأخطاء.
- الفحص في صفحة تسجيل الدخول فقط. يجب أن تحترم إعادة تعيين كلمة المرور، وتسجيل الدخول بـ"رابط السحر" (magic link)، وأي تسجيل دخول اجتماعي 2FA أيضاً، وإلا أصبحت طريقاً للالتفاف عليه.
قائمة الاختبار
- لا يكتمل التسجيل إلا بعد رمز صحيح
- تسجيل الدخول بكلمة مرور صحيحة دون رمز لا يمنح الوصول إلى أي صفحة أو واجهة محمية
- يُرفض الرمز الخاطئ؛ والمحاولات الخاطئة المتكررة تفعّل القفل وبريداً إلكترونياً
- يُرفض رمز من قبل بضع دقائق
- كل رمز استرداد يعمل مرة واحدة فقط
- إيقاف 2FA يتطلب كلمة المرور ورمزاً حالياً
- إعادة تعيين كلمة المرور لا تتجاوز 2FA
- المديرون دون 2FA لا يستطيعون الوصول إلى صفحات الإدارة (إذا كان مطلوباً)
- الأسرار ورموز الاسترداد مشفّرة أو مجزّأة في قاعدة البيانات
- لا تظهر أي رموز أو أسرار في السجلات
شغّل أيضاً قائمة فحص الأمان للتطبيقات المبنية بالذكاء الاصطناعي كاملة قبل الإطلاق.
إضافة 2FA في Mythex
لا يتضمن Mythex نظام تسجيل دخول مدمجاً لمستخدمي تطبيقك النهائيين، لذا فإن 2FA جزء من أي نهج مصادقة تختاره: إما تسجيل دخول خاص بك بالبريد وكلمة المرور باستخدام قاعدة بيانات المشروع، أو مزوّد مستضاف يدعم المصادقة متعددة العوامل. تصف ما تريده في الدردشة باستخدام مطالبات مثل المطالبات أعلاه، وتذهب مفاتيح المزوّد إلى أسرار المشروع (عبر /secrets أو إعدادات المشروع أو بطاقة الأسرار التي يعرضها الوكيل) لا إلى صندوق الرسالة. تتضمن وصفة الوثائق إضافة تسجيل الدخول إلى تطبيقك مطالبة بداية، وتغطي الأمان للتطبيقات التي تبنيها العادات المتعلقة بالمفاتيح والصلاحيات. بعد أن ينتهي الوكيل، اختبر كل بند في القائمة في المعاينة قبل النشر.
الأسئلة
ما أسهل طريقة لإضافة المصادقة الثنائية إلى تطبيق؟
إذا كنت تستخدم مزوّد مصادقة مستضافاً، فشغّل خيار المصادقة متعددة العوامل المدمج فيه، فهذا عادةً أقل كود. وإذا كنت تدير تسجيل الدخول بنفسك، فأضف رموز تطبيق المصادقة (TOTP) باستخدام مكتبة معروفة، مع رموز استرداد وفحص على الخادم.
هل يجب أن أستخدم رموز الرسائل النصية SMS للمصادقة الثنائية؟
الرسائل النصية أفضل من لا عامل ثانٍ، لكنها أضعف الخيارات الشائعة، لأن الرسائل قد تُحوَّل عبر استبدال بطاقة SIM، ويمكن اختلاس الرموز بالتصيّد. اعرض تطبيق المصادقة كخيار افتراضي، وkeys المرور (passkeys) إذا كان مستخدموك مستعدين لها.
هل أحتاج إلى قاعدة بيانات لإضافة المصادقة الثنائية؟
إذا كنت تدير تسجيل الدخول بنفسك، فنعم. يجب تخزين سر المصادقة الثنائية لكل مستخدم، وحالة تفعيلها، ورموز استرداده المشفّرة بالتجزئة (hashed) في مكان يستطيع خادمك فحصه. أما مزوّد المصادقة المستضاف فيتولى تخزين ذلك عنك.
ماذا يحدث إذا فقد المستخدم هاتفه؟
يسجّل الدخول بأحد رموز الاسترداد لمرة واحدة التي عرضتها له عند تفعيل المصادقة الثنائية، ثم يعيد إعدادها على جهاز جديد. وبدون رموز استرداد تحتاج إلى التحقق اليدوي من الهوية، لذا حدد هذه العملية قبل الإطلاق.