محتويات الدورة

اختبار API / متوسط: عقود متفاعلة / الدرس 8

اختبار مصفوفات التوثيق والصلاحيات

فحص علاقات الفاعل والمورد والإجراء بهويات مختلقة ودوال سياسة محلية.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • فصل التحقق من الهوية عن صلاحية التصرف في المورد.
  • بناء حالات قبول ورفض للملكية والأدوار والمستأجرين.

طرح سؤالين مختلفين

ينشئ التوثيق سياق فاعل موثوقا وفق نموذج بيانات اعتماد مختار. وتقرر الصلاحية هل يجوز لهذا الفاعل تنفيذ الإجراء على المورد الآن. الاختبار الذي يمرر معرف قارئ مباشرة إلى دالة سياسة لا يختبر التوثيق. صرح بالحد واستخدم هويات مختلقة. ثم افحص العلاقة المهمة: المالك وغيره، والمستأجر نفسه وغيره، والإجراء المسموح وغيره. لا يثبت نجاح القائمة تلقائيا صلاحية التفاصيل أو التصدير أو التعديل أو المعالجة الخلفية.

إظهار العلاقات المرفوضة

المصفوفة الصغيرة أوضح من حالة نجاح مسؤول واحدة. أدرج مالكا وغير مالك من المستأجر نفسه وفاعلا من مستأجر آخر وفاعلا غائبا. حدد الرفض العام المتوقع وفق سياسة الإفصاح دون افتراض استخدام كل واجهة لخريطة 401 أو403 أو404 نفسها. يختبر المثال سياسة قراءة محلية بثلاثة شروط، ولا يتضمن أدوارا أو بيانات اعتماد. يثبت النجاح تمييز العلاقات المذكورة فقط، ولا يثبت أن كل مسار يستدعي السياسة ببيانات موثوقة.

python مصفوفة مختلقة للملكية والمستأجر
resource = {"owner": "reader-a", "tenant": "class-1"}
def may_read(subject, item):
    return subject is not None and subject["id"] == item["owner"] and subject["tenant"] == item["tenant"]

cases = [(None, False), ({"id":"reader-a","tenant":"class-1"}, True), ({"id":"reader-b","tenant":"class-1"}, False), ({"id":"reader-a","tenant":"class-2"}, False)]
for subject, expected in cases:
    assert may_read(subject, resource) is expected
print("four access relationships checked")
الناتج المتوقع
four access relationships checked

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

فحص الحقول إلى جانب الوصول إلى المورد

قد لا تشمل صلاحية قراءة مورد كل خصائصه. يعرض الكتاب العام عنوانا ومعرفا بينما تبقى ملاحظة التحرير مقيدة. اختبر إسقاط الاستجابة لكل عرض موثق، وافحص غياب الحقول المحظورة بدلا من null إذا كان الغياب مطلوبا. عالج أيضا حقول الملكية والامتيازات المرسلة من العميل حسب العقد. يبني البرنامج الثاني إسقاطا عاما بقائمة سماح، ويفحص بيانات واحدة فقط. لا يكتشف كل الحقول الخاصة ولا يستبدل طبقة الصلاحيات في الإطار.

python فحص تمثيل عام بقائمة سماح
record = {"id":"book-4", "title":"Quiet Rivers", "editorNote":"classroom-private", "owner":"editor-a"}
public = {key: record[key] for key in ("id", "title")}
assert public == {"id":"book-4", "title":"Quiet Rivers"}
assert "editorNote" not in public
assert "owner" not in public
print("public projection checked")
الناتج المتوقع
public projection checked

يحفظ المثال المحلي الكامل الحقول العامة المختارة ويستبعد حقلين مقيدين مختلقين. لا يستخدم بيانات خاصة. يتحقق من الإسقاط فقط لا الوصول للتخزين أو صلاحية الطلب أو كل مسارات التسلسل.

رصد الرفض عبر جميع الآثار

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

مراجعة الاستدعاء وافتراضات دورة الحياة

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

الأخطاء الشائعة وإصلاحها

ينجح المالك وكل غير مالك أيضا

لماذا يحدث؟
اختبرت حالة دور إيجابية فقط.
كيف تصلحه؟
أضف رفضا داخل المستأجر وعبره وافحص ثبات الحالة.
كيف تتجنب تكراره؟
راجع مصفوفة الفاعل والمورد والإجراء لكل عملية حساسة.

تحتوي القائمة عناصر مجاورة محظورة

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

يوصف نجاح السياسة بأنه تحقق رمز

لماذا يحدث؟
يحقن الاختبار فاعلا موثوقا مسبقا.
كيف تصلحه؟
سم حدود النموذج وافحص تكامل الهوية مستقلا.
كيف تتجنب تكراره؟
وثق حدود الأمان الموجودة في كل اختبار.

اختبر فهمك

1. يعيد تعديل غير المالك 403 لكن توجد رسالة مؤجلة. ماذا تؤكد الحالة؟

اعرض الحل المشروح

يجب أن يحفظ الرفض السجل ويمنع البريد غير المصرح به وفق العقد. التقط الملاحظتين، ثم افحص موضع فحص الصلاحية بالنسبة للتعديل والإدراج في الطابور. لا تثبت الحالة العامة وحدها غياب أثر العمل.

2. لماذا تكرر معرف القارئ في مستأجرين؟

اعرض الحل المشروح

لكشف سياسة تقارن معرف القارئ وحده وتنسى نطاق المستأجر. تثبت المصفوفة سمة وتغير الأخرى عمدا. يجب توثيق كون المعرفات فريدة عالميا في النظام الحقيقي واتباع نموذج موارده ومستأجريه.

أهم ما تعلمته

  • يحتاج التوثيق والصلاحية إلى دليلين مختلفين.
  • تفحص الحالات السلبية الاستبعاد وثبات الآثار.
  • لا يثبت نجاح دالة السياسة إنفاذها في كل مسار.

المراجع الرسمية