طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 241 · تحليل وتصميم برمجيات الويب
تقييم الدرس 21

مبادئ متقدمة: الأذونات المشروطة والمصادقة متعددة العوامل

أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس

أسئلة التقييم

تقييم الدرس 21: مبادئ متقدمة: الأذونات المشروطة والمصادقة متعددة العوامل. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) أي مما يلي شرط «سياق»؟
2) بصمة الإصبع عامل من نوع:
3) متى يُطلب العامل الثاني مرة أخرى؟
4) في سياسة الاسترداد، لماذا لا يسترد الموظف طلبًا اعتمده؟
5) أين يُكتب شرط «المدرب لدوراته فقط»؟

2السؤال الثاني: صح أم خطأ

1) الدور وحده يكفي للتعبير عن كل قواعد الصلاحيات.
الصواب: خطأ
2) يُعتمد على وقت جهاز المستخدم في الشروط الزمنية.
الصواب: خطأ
3) رموز MFA يجب أن تكون لها مدة صلاحية وحد للمحاولات.
الصواب: صح
4) الرموز الاحتياطية تساعد من فقد جواله.
الصواب: صح
5) جمع شروط السياسة في دالة واحدة يسهّل اختبارها.
الصواب: صح

3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة

1) المصادقة بأكثر من نوع من الأدلة تسمّى .
الإجابة: متعددة العوامل
2) القواعد التي تعتمد على خصائص المستخدم والمورد والسياق تسمّى أذونات .
الإجابة: مشروطة
3) رمز يصل للجوال عامل من نوع «شيء ».
الإجابة: تملكه

4السؤال الرابع: أسئلة عملية

1) ماذا يرد الخادم على خالد حين يسجل حضور الدورة 3 التي لم تبدأ؟ POST /api/courses/3/attendance

const express = require('express');const app = express();app.use(express.json()); // من مصفوفة الصلاحيات (الدرس 16) إلى الكود مباشرةconst ROLE_PERMS = {  trainee:   ['course:read', 'enrollment:create', 'enrollment:read:own'],  trainer:   ['course:read', 'attendance:record'],  registrar: ['course:read', 'enrollment:read', 'enrollment:approve'],  manager:   ['course:read', 'enrollment:read', 'report:finance', 'user:manage'],};const users = [  { id: 1, name: 'سارة', role: 'trainee' },  { id: 2, name: 'نورة', role: 'registrar' },  { id: 3, name: 'أ. فهد', role: 'manager' },  { id: 4, name: 'خالد', role: 'trainer' },];// رموز دخول مبسطة للتجربة؛ في النظام الحقيقي JWT كما في مقرر أطر الويبconst tokens = { 'tok-sara': 1, 'tok-noura': 2, 'tok-fahad': 3, 'tok-khaled': 4 }; // 1) المصادقة: من أنت؟function authenticate(req, res, next) {  const t = (req.headers.authorization || '').replace('Bearer ', '');  const user = users.find(u => u.id === tokens[t]);  if (!user) return res.status(401).json({ error: 'سجّل الدخول أولًا' });  req.user = user;  next();} // 2) التفويض: هل يحق لك؟const can = (user, perm) => (ROLE_PERMS[user.role] || []).includes(perm);function authorize(perm) {  return (req, res, next) =>    can(req.user, perm) ? next() : res.status(403).json({ error: 'لا تملك الصلاحية ' + perm });} const TODAY = '2026-11-03';     // تاريخ اليوم ثابت في المثال حتى تتكرر النتيجةconst courses = [  { id: 1, title: 'تصميم الويب',    trainerId: 4, start: '2026-11-01', end: '2026-11-12' },  { id: 2, title: 'قواعد البيانات', trainerId: 9, start: '2026-11-01', end: '2026-11-12' },  { id: 3, title: 'أمن الويب',      trainerId: 4, start: '2026-12-01', end: '2026-12-10' },]; // السياسة: الدور + الملكية + الزمن، في مكان واحدfunction canRecordAttendance(user, course) {  return can(user, 'attendance:record')      && course.trainerId === user.id                       // دورته هو      && TODAY >= course.start && TODAY <= course.end;      // أثناء انعقادها} app.post('/api/courses/:id/attendance', authenticate, (req, res) => {  const course = courses.find(c => c.id === Number(req.params.id));  if (!course) return res.status(404).json({ error: 'غير موجودة' });  if (!canRecordAttendance(req.user, course))    return res.status(403).json({ error: 'لا يمكنك تسجيل الحضور لهذه الدورة الآن' });  res.status(201).json({ course: course.title, recorded: req.body.present.length });}); app.listen(3000);
الاستجابة الصحيحة:
{"error":"لا يمكنك تسجيل الحضور لهذه الدورة الآن"}
2) ماذا يحدث بعد 5 محاولات خاطئة للرمز حسب المخطط؟
خدمة الرسائلالخادمalt[الرمز صحيح وخلال 5 دقائق][خاطئ أو منتهٍ]عملية حساسة: تشترط mfaأ. فهدالبريد + كلمة المرورأرسل رمزًا من 6 أرقام لجوالهمطلوب العامل الثانيالرمز 482913رمز دخول + mfa = true401 (وبعد 5 محاولات يُقفل)استرداد 900 ريال + رمز الدخول
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس