إعداد الموقع لتعطيل التسجيلات المحلية

مرحباً،

أبحث عن إعداد في الموقع يعطل التسجيلات المحلية، لكنه يحافظ على تسجيل الحسابات الجديدة عبر OpenID Connect.

عند الرجوع إلى تقارير المستخدمين من يناير، أشارت الغالبية إلى نص الموقع التالي: «كانت رسالة الخطأ: لا يُسمح بتسجيل الحسابات الجديدة في الوقت الحالي»، مما كان سيؤدي بي إلى تفعيل خيار Allow_new_registrations.

عند تصفح جميع الإعدادات المتاحة، لا أرى إعدادًا صريحًا يسمح بالتسجيل عبر OIDC فقط دون السماح بالتسجيل المحلي.

ومع ذلك، استخدمت استعلامًا في Data Explorer للتحقق من وجود أي مستخدمين (مخالفين بذلك شروط الخدمة بالطبع) استخدموا أدوات المطورين (DevTools) لإظهار زر التسجيل أو لتعطيل إعادة التوجيه عبر JavaScript بشكل انتقائي:

SELECT
  u.id,
  u.username,
  u.name,
  ue.email,
  u.active,
  u.approved,
  u.created_at,
  u.last_seen_at
FROM users u
LEFT JOIN user_associated_accounts uaa
  ON uaa.user_id = u.id
LEFT JOIN user_emails ue
  ON ue.user_id = u.id
 AND ue.primary = true
WHERE uaa.user_id IS NULL
  AND u.staged = false
ORDER BY u.last_seen_at DESC NULLS LAST, u.created_at DESC

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

يمكن بدلاً من ذلك تحديد نطاق must_approve_users مع must_approve_local_users

لكن هذا سيؤدي إلى إزالة إمكانية تعطيل الصفحة الأولية التي تعيد التوجيه إلى /login كأثر جانبي لحل هذه الثغرة الأمنية.

قم بإلغاء تحديد enable local logins. سيظل ذلك يسمح بالتسجيل/تسجيل الدخول عبر الطرق الخارجية، مثل موفر OpenID.

المشكلة الرئيسية في إلغاء تحديد ذلك هي أن المنتدى يعيد التوجيه مباشرة إلى Entra، مما يجعل المنتدى يبدو وكأنه مُدار من قبل مؤسسة (بينما هو ليس كذلك).

هل يتطلب موقعك تسجيل الدخول؟ إذا كان الأمر كذلك، راجع هذا الإعداد:

نعم، هذا مفعّل. هذا هو الإعداد الذي قدمتُ طلب دمجًا (pull request) لإزالة كلمة “خارجي” من وصف الإعداد.

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

  • إلغاء تحديد خيار تمكين تسجيل الدخول المحلي
  • إلغاء تحديد خيار المصادقة فورًا
  • تمكين طريقة تسجيل دخول خارجية واحدة

بمجرد استيفاء هذه الشروط، سيظهر للمستخدمون شاشة تطلب تسجيل الدخول مثل هذه:

ستؤدي كلتا الزرين هنا (إنشاء حساب / تسجيل الدخول) إلى طريقة تسجيل الدخول الخارجية الوحيدة لديك.

نعم، هذا بالضبط ما فعلته على https://physicswithethan.discourse.diy

كما قمت بتعطيل المكون المخصص الخاص بي “تجاوزات التسجيل”

إعجاب واحد (1)

إذن، أنت جاهز تمامًا، أم أنك تفتقد زر التسجيل؟ يمكنك الآن السماح بالتسجيلات الجديدة، وسيؤدي ذلك إلى تمكين التسجيل عبر OIDC فقط.

هل يؤدي تعطيل auth immediately إلى منع المستخدمين من إنشاء حساب جديد عبر تدفق تسجيل الدخول OIDC؟

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

حسناً، قمت بتعديل كل من login_required.welcome_message و site_description، مما جعل صفحة البداية تبدو أكثر تخصيصاً.

كما قمت بتعطيل Auto_skip_create_confirm لتكون رسالتي login_required.welcome_message دقيقة فيما يتعلق باختيار اسم المستخدم.

إعجابَين (2)

هل من الممكن تعطيل زر “التسجيل” في شاشة البداية دون استخدام CSS؟ (تفعيل “تسجيل الدخول المحلي” بدلاً من إيقافه)

وبالتالي، يجب على المستخدمين التسجيل عبر رابط الدعوة للتسجيل المحلي. ومع ذلك، أشعر بالقلق من أن تفعيل إعداد “الدعوة فقط” قد يتسبب في حدوث خلل في مرحلة post-OIDC-create_confirm.

يخبرني ask.discourse.com

سيكون هذا المزيج حلاً للمشكلة الموصوفة في منشوري السابق، إذا كان يعمل

أعتقد أنه وجد هذه المعلومات من Invite Only and Auth skip create confirm settings show signup popup when using together

ومع ذلك، ألاحظ أن تقرير الخطأ يتعلق بـ Oauth2، وليس بإضافة OpenID connect