أوه، لقد فقدت هاتفي. كيف يمكنني الآن الحصول على رمز التحقق لمرة واحدة (OTP)؟

ماذا يحدث إذا قمت بتفعيل المصادقة الثنائية باستخدام هاتفك ثم فقدته؟

كيفية الاستعادة واستخدام برنامج آخر، مثل pass-otp، بدلاً منه؟

وبما أنه لا يمكن تسجيل الدخول دون العامل الثاني، فكيف يمكن الحصول على الرموز (السر، الجهة المصدرة) التي تتيح إعداد برنامج آخر؟

ستحتاج إلى تعطيل المصادقة الثنائية (2FA) عبر وحدة تحكم Rails. لا يوفر Discourse حاليًا آلية استعادة مدمجة تعتمد على الرسائل النصية القصيرة أو البريد الإلكتروني.

يحتوي Discourse على رموز احتياطية، يُستخدم منها في حال فقدان جهاز المصادقة الثنائية (OTP).

يمكنك أيضًا تسجيل المصادقة الثنائية (OTP) على أجهزة متعددة.

يمكن استخدام مفاتيح FIDO2 أيضًا، ويدعم Discourse استخدام عدة مفاتيح، لذا يمكنك الاحتفاظ بمفاتيح احتياطية في أماكن آمنة، ومفتاحك الرئيسي، والمفاتيح المخزنة في جهازك، مثل بصمة الإصبع على أجهزة Android وجهاز Windows Hello على أجهزة الكمبيوتر المحمولة.

إذا لم تقم بأي من ذلك، فستحتاج إلى الاتصال بفريق الإدارة وطلب تعطيل المصادقة الثنائية (2FA) على حسابك.

حسناً، هل يمكنك الرجاء توجيهي إلى الإجراء المتبع لتعطيل المصادقة الثنائية (2FA) من وحدة التحكم؟

ابحث عن “تعطيل المصادقة الثنائية”، أول نتيجة تقول

إذن:

./launcher enter app
rails c
id = User.find_by(username: "YOURUSERNAME").id
UserSecondFactor.totps.where(user_id: id).each(&:destroy!)

حسنًا، في الواقع، بعد اتباع الطريقة المذكورة أعلاه، لم يعد لدي أي إمكانية لتسجيل الدخول، حتى عبر البريد الإلكتروني، مع ظهور الرسالة التالية:

طريقة العامل الثاني المحددة غير مفعلة لحسابك.

تحقق مسؤول آخر من أن الحساب لا يحتوي على تفعيل المصادقة الثنائية.


تعديل قمت بتغيير عنوان الموضوع إلى bug لأن الحل المقترح لا يعمل.

اليوم راجعته مرة أخرى ووجدت أن:

[25] pry(main)> how.totp_enabled?
=> false
[26] pry(main)> how.backup_codes_enabled?
=> true
[27] pry(main)> how.totp_or_backup_codes_enabled?
=> true

لذا حاولت إزالة رموز النسخ الاحتياطي أيضًا، بناءً على الرد السابق من @falco:

UserSecondFactor.backup_codes.where(user_id: id).each(&:destroy!)

الآن إليك الحل الكامل لتعطيل OTP لمستخدم فقد طرق الدخول: يجب عليك إزالة كل من إدخالات totps ورموز backup_codes أيضًا، حتى تعود استدعاء #totp_or_backup_codes_enabled? بقيمة false.