التحقق من صحة نقطة النهاية باستخدام مخطط CloudEvents
إخطارات الويب هي واحدة من العديد من الطرق لتلقي الأحداث من شبكة الأحداث لـ Azure. عندما يكون حدث جديد جاهزا، تقوم خدمة Event Grid بطرح طلب HTTP إلى نقطة النهاية المكونة مع معلومات الحدث في نص الطلب.
مثل العديد من الخدمات الأخرى التي تدعم إخطارات الويب، تتطلب منك شبكة الأحداث إثبات ملكية نقطة النهاية لإخطارات الويب قبل أن تبدأ في تسليم الأحداث إلى نقطة النهاية هذه. يمنع هذا المطلب مستخدم ضار من إغراق نقطة النهاية بالأحداث.
التحقق من صحة نقطة النهاية باستخدام CloudEvents الإصدار رقم 1.0
ينفذ CloudEvents v1.0 دلالات الحماية من إساءة الاستخدام الخاصة به باستخدام أسلوب HTTP OPTIONS . عند استخدام مخطط CloudEvents للإخراج، يستخدم شبكة الأحداث حماية إساءة استخدام CloudEvents v1.0 بدلاً من آلية الحدث التحقق من صحة شبكة الأحداث.
حماية إساءة استخدام CloudEvent v1.0
يمكن إساءة استخدام أي نظام يسمح بتسجيل الإشعارات وتسليمها إلى نقاط نهاية HTTP العشوائية بحيث يقوم شخص ما بتسجيل عنوان نظام لا يتوقع مثل هذه الطلبات وغير مصرح للطرف المسجل بإجراء مثل هذا التسجيل له. وفي الحالات القصوى، يمكن إساءة استخدام بنية تحتية للإخطار لشن هجمات رفض الخدمة على موقع ويب عشوائي.
لحماية المرسل من إساءة الاستخدام بهذه الطريقة، يحتاج هدف التسليم المشروع إلى الإشارة إلى أنه يوافق على الإشعارات التي يتم تسليمها إليه.
يتم تحقيق الوصول إلى اتفاقية التسليم باستخدام تأكيد اتصال التحقق التالي. يمكن تنفيذ تأكيد الاتصال إما على الفور في وقت التسجيل أو كطلب "الاختبار المبدئي" الذي يسبق التسليم مباشرة.
من المهم أن نفهم أن تأكيد الاتصال لا يهدف إلى إنشاء سياق مصادقة أو تخويل. إنه يعمل فقط على حماية المرسل من أن يتم إخباره إلى وجهة لا تتوقع نسبة استخدام الشبكة. في حين أن هذه المواصفات تفرض استخدام نموذج تخويل، فإن هذه الولاية ليست كافية لحماية أي موقع ويب عشوائي من حركة المرور غير المرغوب فيها إذا لم ينفذ موقع الويب هذا التحكم في Authorization
الوصول وبالتالي يتجاهل العنوان.
يجب أن تدعم أهداف التسليم ميزة الحماية من إساءة الاستخدام. إذا كان الهدف لا يدعم الميزة، فقد يختار المرسل عدم الإرسال إلى الهدف، على الإطلاق، أو الإرسال فقط بمعدل طلب منخفض جدا.
طلب التحقق من الصحة
يستخدم طلب التحقق من الصحة أسلوب HTTP OPTIONS . يتم توجيه الطلب إلى URI هدف المورد الدقيق الذي يتم تسجيله. مع طلب التحقق من الصحة، يطلب المرسل من الهدف الحصول على إذن لإرسال الإعلامات، ويمكنه الإعلان عن معدل الطلب المطلوب (الطلبات في الدقيقة). سيستجيب هدف التسليم ببيان إذن ومعدل الطلب المسموح به. فيما يلي بعض حقول العنوان لتضمينها في طلب التحقق من الصحة.
WebHook-Request-Origin
WebHook-Request-Origin
يجب تضمين العنوان في طلب التحقق من الصحة ويطلب إذنا لإرسال إعلامات من هذا المرسل، ويحتوي على تعبير نظام أسماء المجالات (DNS) الذي يعرف نظام الإرسال، على سبيل المثال eventemitter.example.com
. تهدف القيمة إلى تحديد جميع مثيلات المرسل التي تعمل نيابة عن نظام معين، وليس المضيف الفردي.
بعد تأكيد الاتصال وإذا تم منح الإذن، يجب على المرسل استخدام Origin
عنوان الطلب لكل طلب تسليم، مع القيمة المطابقة لتلك الخاصة بهذا العنوان.
مثال:
WebHook-Request-Origin: eventemitter.example.com
استجابة التحقق من الصحة
إذا كان هدف التسليم يسمح بتسليم الأحداث فقط، فيجب عليه الرد على الطلب عن طريق تضمين WebHook-Allowed-Origin
العناوين و WebHook-Allowed-Rate
. إذا اختار هدف التسليم منح الإذن عن طريق رد الاتصال، فإنه يحجب رؤوس الاستجابة.
إذا كان هدف التسليم لا يسمح بتسليم الأحداث أو لا يتوقع تسليم الأحداث ومع ذلك يتعامل مع أسلوب خيارات HTTP، يجب عدم تفسير الاستجابة الحالية على أنها موافقة، وبالتالي لا يمكن أن تعتمد تأكيد الاتصال على رموز الحالة. إذا لم يتعامل هدف التسليم مع أسلوب خيارات HTTP، فيجب أن يستجيب برمز حالة HTTP 405، كما لو لم تكن OPTIONS مدعومة.
يجب أن تتضمن استجابة Allow
OPTIONS العنوان الذي يشير إلى السماح بأسلوب POST. قد يسمح بأساليب أخرى على المورد، ولكن وظيفتها خارج نطاق هذه المواصفات.
WebHook-allowed-Origin
WebHook-Allowed-Origin
يجب إرجاع العنوان عندما يوافق هدف التسليم على تسليم الإعلام بواسطة خدمة الأصل. يجب أن تكون قيمته إما اسم الأصل المتوفر في WebHook-Request-Origin
الرأس، أو حرف نجمة مفرد ('*')، مما يشير إلى أن هدف التسليم يدعم الإعلامات من جميع الأصول.
WebHook-Allowed-Origin: eventemitter.example.com
أو
WebHook-Request-Origin: *
هام
لمزيد من المعلومات حول الحماية من إساءة الاستخدام، راجع الحماية من إساءة الاستخدام في HTTP 1.1 Web Hooks لمواصفات تسليم الحدث.
المحتوى ذو الصلة
راجع المقالة التالية لمعرفة كيفية استكشاف أخطاء التحقق من صحة اشتراك الحدث وإصلاحها: استكشاف أخطاء التحقق من صحة اشتراك الحدث وإصلاحها.