أود طلب دعم لتدفق محلي خالٍ من كلمة المرور في Discourse، دون الحاجة للاعتماد على موفر هوية خارجي مثل Microsoft أو Google وما إلى ذلك.
حاليًا، وبالنسبة لي، يبدو أن Discourse يحتوي على أجزاء من هذه الميزة بالفعل، لكنه يفتقر إلى مجموعة التكوين الفعلية المطلوبة.
ما هو موجود اليوم
يتوفر في Discourse حاليًا:
- حسابات محلية
- روابط تسجيل دخول عبر البريد الإلكتروني / سلوك تسجيل دخول يشبه الخالي من كلمة المرور عبر
enable local logins via email - تدفقات الدعوة حيث يمكن تأجيل كلمة المرور
- توفير تلقائي للمصادقة الخارجية عبر OIDC / OAuth / SAML / DiscourseConnect
لكن القطعة المفقودة هي أن تسجيل الدخول المحلي عبر البريد الإلكتروني لا يزال مرتبطًا بتسجيل الدخول المحلي بشكل عام، مما يعني أنني لا أستطيع القول بوضوح:
- السماح بتسجيل الدخول المحلي عبر رابط سحري (Magic Link) عبر البريد الإلكتروني
- السماح بالتسجيل / الانضمام المحلي عبر رابط سحري عبر البريد الإلكتروني
- عدم السماح بالمصادقة المحلية بكلمة مرور
هذا هو المزيج الذي أريده.
حالة الاستخدام
أريد أن يدعم Discourse هذا النموذج بشكل أصلي:
- يصل المستخدم إلى الموقع
- يدخل المستخدم بريده الإلكتروني
- يرسل Discourse إليه رابط تسجيل دخول لمرة واحدة / ساري المفعول لفترة قصيرة
- إذا لم يكن لديه حساب بالفعل، ينشئ Discourse حسابًا له
- يتم تسجيل دخول المستخدم
- يمكن أن تستمر عمليات تسجيل الدخول المستقبلية بنفس الطريقة
- لا توجد حاجة لكلمة مرور محلية ما لم يرغب المسؤول في السماح بها صراحةً
بعبارة أخرى:
حساب محلي
التحقق من ملكية البريد الإلكتروني محليًا
لا توجد حاجة لكلمة مرور محلية
لماذا هذا الأمر مهم
في الوقت الحالي، إذا أراد شخص ما تجربة خالية من كلمات المرور، فإن الحل البديل الأنسب يبدو هو استخدام موفر هوية خارجي. لكن هذا ليس مثاليًا لكل موقع.
بعض الأسباب:
- لا ترغب كل المجتمعات في الاعتماد على Microsoft / Google / Auth0 / إلخ
- بعض المجتمعات تريد تدفق مصادقة محليًا أبسط وأكثر حماية للخصوصية
- بعض المجتمعات تريد تقليل احتكاك كلمات المرور دون تفويض الهوية لطرف ثالث
- بعض المسؤولين يريدون دعم المستخدمين الذين يواجهون صعوبة في تذكر كلمات المرور ولكنهم يستطيعون التعامل مع روابط البريد الإلكتروني بسهولة
هناك سوابق لتسجيل الدخول الخالي من كلمات المرور في Discourse عبر روابط البريد الإلكتروني، لذا يبدو هذا الأمر أكثر كـ “وضع منتج مفقود” منه كمفهوم جديد تمامًا.
ما أطلبه
أعتقد أنه يمكن حل هذه المشكلة من خلال فصل هذه المفاهيم:
السلوك الحالي
enable local loginsenable local logins via email
السلوك المطلوب
السماح للمسؤولين بالتحكم بشكل مستقل في:
- السماح بتسجيل الدخول المحلي بكلمة مرور
- السماح بتسجيل الدخول المحلي عبر رابط البريد الإلكتروني
- السماح بالتسجيل المحلي بكلمة مرور
- السماح بالتسجيل المحلي / إنشاء الحساب عبر رابط البريد الإلكتروني
نموذج الإعدادات المطلوب كمثال
شيء مثل:
enable local password loginsenable local email loginsenable local password signupenable local email signup- ربما
local email signup creates account automatically - ربما
local email signup requires staff approval - ربما
local email login link expiry minutes
ليس بالضرورة هذه الأسماء الدقيقة للإعدادات، بل المفهوم فقط.
تجربة المستخدم المطلوبة
تسجيل الدخول
يجب أن يتمكن المستخدم من الاختيار بين:
- المتابعة بكلمة المرور
- أو أرسل لي رابط تسجيل دخول عبر البريد الإلكتروني
إذا كان تسجيل الدخول بكلمة المرور معطلًا، يتم عرض خيار رابط البريد الإلكتروني فقط.
التسجيل
يجب أن يتمكن المستخدم من الاختيار بين:
- إنشاء حساب بكلمة مرور
- أو إنشاء حساب عبر رابط البريد الإلكتروني
إذا كان التسجيل بكلمة مرور معطلًا، يجب أن يقوم الموقع تلقائيًا بالتسجيل عبر رابط البريد الإلكتروني.
لماذا الدعوات ليست كافية
تساعد الدعوات في عملية الانضمام، لكنها ليست نفس الشيء مثل وضع مصادقة محلي خالٍ من كلمات المرور بشكل فعلي.
بناءً على فهمي:
- الدعوات مخصصة في الغالب للقبول / الاسترداد
- هي ليست بيانات الاعتماد المستمرة لتسجيل دخول المستخدم
- بعد انتهاء صلاحية الجلسة، لا يزال المستخدمون بحاجة إلى مسار تسجيل دخول عادي
لذا فإن الدعوات ذات صلة، لكنها لا تحل المشكلة بالكامل.
لماذا المصادقة الخارجية ليست كافية
نعم، يمكن لـ OIDC / OAuth / SAML تقديم تجارب خالية من كلمات المرور أو تعتمد على كلمات المرور لمرة واحدة (OTP)، و auth skip create confirm يساعد كثيرًا في ذلك.
لكن هذا يعني أن الموقع أصبح الآن معتمدًا على موفر هوية تابع لجهة خارجية.
بالنسبة لبعض المجتمعات، هذا أمر مقبول. وبالنسبة لآخرين، فهو تعقيد غير ضروري واعتماد غير مرغوب فيه.
أفكار أمنية
أدرك أن مصادقة رابط البريد الإلكتروني لها آثار أمنية، لكن Discourse يحتوي بالفعل على أنماط ذات صلة مثل:
- إعادة تعيين كلمة المرور عبر البريد الإلكتروني
- تسجيل الدخول عبر رابط البريد الإلكتروني
- قبول الدعوة عبر البريد الإلكتروني
لذا فإن هذا لن يقدم فكرة إثبات السيطرة عبر البريد الإلكتروني من الصفر.
يمكن أن تشمل التدابير الأمنية المعقولة:
- روابط سارية المفعول لفترة قصيرة
- حدود معدل صارمة
- رموز تستخدم لمرة واحدة
- مصادقة ثنائية (2FA) اختيارية بعد تسجيل الدخول عبر رابط سحري
- فترة انتظار اختيارية قبل تغيير البريد الإلكتروني / كلمة المرور بعد المصادقة عبر رابط سحري
- رؤية المسؤول / سجلات لتسجيل الدخول عبر رابط البريد الإلكتروني
باختصار
أطلب وضع محلي خالٍ من كلمات المرور من الدرجة الأولى في Discourse، حيث:
- يقوم المستخدمون بالمصادقة من خلال إثبات سيطرتهم على بريدهم الإلكتروني
- يمكن لـ Discourse إنشاء حسابات محلية من هذا التدفق
- يمكن للمسؤولين تعطيل مصادقة كلمة المرور المحلية تمامًا
- يعمل هذا دون الحاجة إلى Microsoft / Google / موفر SSO آخر
أعتقد أن هذا سيكون ميزة مفيدة جدًا للمجتمعات التي تريد انضمامًا منخفض الاحتكاك دون تفويض الهوية لطرف ثالث.