تكوين الوصول للمزودين والأدوار

مكتمل

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

سننظر في تكوين التوجيه والأدوار في Azure Static Web Apps لضبط وصول المستخدم إلى تطبيق الويب خاصتنا.

ملف التكوين لتطبيقات Azure Static Web Apps

يُحدد تكوين Azure Static Web Apps في الملف staticwebapp.config.json الذي يتحكم في الإعدادات التالية:

  • التوجيه
  • المصادقة
  • التخويل
  • قواعد احتياطية
  • تجاوز استجابة HTTP
  • تعريفات عنوان HTTP العمومية
  • أنواع MIME مخصصة

الموقع المستحسن به لـ staticwebapp.config.json في مجموعة المجلد المُعين بوصفها الإعداد app_location الذي اخترناه أثناء التوزيع. ومع ذلك، قد يُوضع الملف في أي موقع داخل مجلد التعليمات البرمجية المصدر لتطبيقك.

بالنسبة لحالة الاستخدام الخاصة بنا، سننظر في تكوين التحويل لتحقيق ما نريد.

تقييد مزودي المصادقة

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

على سبيل المثال، لتعطيل تسجيل الدخول من خلال موفر GitHub، يمكنك إضافة قاعدة تحويل مثل هذه في staticwebapp.config.jsonالملف.

{
  "routes": [
    {
      "route": "/.auth/login/github",
      "statusCode": 404
    }
  ]
}

نجبر المسار /.auth/login/github المستخدم للمصادقة مع موفر GitHub على إرجاع خطأ404 (غير موجود)، حتى لا يتمكن المستخدمون من الوصول إليه. يمكنك إضافة العديد من قواعد المسارات التي نريد تعطيلها لجميع المقدمين الذين لا تريد استخدامهم.

تأمين المسارات مع الأدوار

المسارات متاحة للوصول افتراضيًا للجميع دون أي قيود. يمكنك تأمين المسارات عن طريق إضافة اسم دور واحد أو أكثر إلى صفيف القاعدة allowedRoles. افتراضيًا، ينتمي كل مستخدم إلى الدور anonymous المُضمَّن، وجميع المستخدمين الذين سجلوا الدخول هم أعضاء في الدور authenticated.

ذلك يعني تقييد مسار إلى المستخدمين المصادق عليهم فقط، يمكنك إضافة دور authenticated المُضمَّن إلى الصفيف allowedRoles.

{
  "routes": [
    {
      "route": "/profile",
      "allowedRoles": ["authenticated"]
    }
  ]
}

باستخدام ذلك التكوين، إذا حاول مستخدم غير مصادق الوصول إلى المسار /profile فسيُرجع خطأ 401 (غير مصرح به).

يمكنك أيضًا تقييد أساليب HTTP محددة لمسار معين، مثل هذا:

{
  "routes": [
    {
      "route": "/profile",
      "methods": ["PUT", "POST", "DELETE"],
      "allowedRoles": ["authenticated"]
    }
  ]
}

في هذا المثال، يمكن لجميع المستخدمين الوصول إلى الأسلوب GET على المسار /profile، ولكن يمكن للمستخدمين المصادق عليهم فقط استخدام PUT أو POST أو DELETE.

استخدام حرف بدل

يمكنك استخدام حرف بدل في نهاية المسار لمطابقة جميع المسارات التي تتبع النمط الأساسي. على سبيل المثال، لتقييد جميع عناوين URL بدءًا من /api إلى المستخدمين المصادقين، يمكنك كتابة:

{
  "routes": [
    {
      "route": "/api/*",
      "allowedRoles": ["authenticated"]
    }
  ]
}

الخطوات التالية

بعد ذلك، سننفذ قيود الوصول في تطبيقنا.