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

مرحباً،

أبحث عن إعداد في الموقع يعطل التسجيلات المحلية، لكنه يحافظ على تسجيل الحسابات الجديدة عبر 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 كأثر جانبي لحل هذه الثغرة الأمنية.