تخطَّ إلى المحتوى

ADR-006: تطبيق المصادقة متعددة العوامل

مقترح

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

الاعتبارات الرئيسية:

  • التوافق للخلف مع المصادقة الموجودة
  • دعم طرق 2FA متعددة
  • تجربة المستخدم أثناء الإعداد وتسجيل الدخول
  • آليات الاسترجاع للأجهزة المفقودة
  • التكامل مع نظام الأذونات الموجود

سنقوم بتطبيق TOTP (كلمة مرور لمرة واحدة قائمة على الوقت) كطريقة 2FA الأساسية مع دعم رموز النسخ الاحتياطي.

sequenceDiagram
participant U as المستخدم
participant X as XOOPS
participant T as مكتبة TOTP
participant D as قاعدة البيانات
U->>X: تسجيل دخول مع كلمة المرور
X->>D: التحقق من كلمة المرور
D-->>X: كلمة المرور صحيحة
X->>D: فحص تفعيل 2FA
D-->>X: 2FA مطلوب
X->>U: طلب رمز 2FA
U->>X: إرسال رمز TOTP
X->>T: التحقق من الرمز
T-->>X: الرمز صحيح
X->>U: تسجيل الدخول الناجح
CREATE TABLE `{PREFIX}_users_2fa` (
`user_id` INT(11) NOT NULL,
`secret` VARCHAR(32) NOT NULL,
`enabled` TINYINT(1) DEFAULT 0,
`backup_codes` TEXT,
`last_used` INT(11),
`created` INT(11) NOT NULL,
PRIMARY KEY (`user_id`),
FOREIGN KEY (`user_id`) REFERENCES `{PREFIX}_users`(`uid`)
);
interface TwoFactorAuthInterface
{
public function enable(int $userId): TwoFactorSetup;
public function disable(int $userId): void;
public function verify(int $userId, string $code): bool;
public function generateBackupCodes(int $userId): array;
public function isEnabled(int $userId): bool;
}

  • أمان الحساب محسّن بشكل كبير
  • توافق TOTP القياسي (Google Authenticator وغيره)
  • رموز النسخ الاحتياطي تمنع قفل الحساب
  • اختياري لكل مستخدم - لا يفرض الاعتماد
  • يسمح تكامل وسيط PSR-15 بدمج نظيف
  • خطوة تسجيل دخول إضافية تؤثر على تجربة المستخدم
  • يجب على المستخدمين إدارة تطبيقات المصادقة
  • الأجهزة المفقودة تتطلب عملية استرجاع
  • تخزين قاعدة البيانات والاستعلامات الإضافية
  • يتطلب اعتماد مكتبة التشفير