إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح لك هذه المقالة كيفية المصادقة باستخدام مساحات أسماء Azure Event Grid باستخدام خطاف ويب أو دالة Azure.
تسمح مصادقة الإخطار على الويب لنقاط نهاية HTTP الخارجية (خطافات الويب أو الوظائف) بمصادقة اتصالات النقل عن بعد لوضع الرسائل في قائمة انتظار الرسائل (MQTT) ديناميكيا. يستخدم هذا الأسلوب التحقق من صحة رمز الويب JSON لمعرف Microsoft Entra لضمان الوصول الآمن.
عندما يحاول العميل الاتصال، يستدعي الوسيط نقطة نهاية HTTP معرفة من قبل المستخدم تتحقق من صحة بيانات الاعتماد، مثل الرموز المميزة لتوقيع الوصول المشترك وأسماء المستخدمين وكلمات المرور، أو حتى إجراء فحوصات قائمة إبطال الشهادات. يقوم خطاف الويب بتقييم الطلب وإرجاع قرار للسماح بالاتصال أو رفضه، جنبا إلى جنب مع بيانات التعريف الاختيارية للتخويل الدقيق. يدعم هذا النهج نهج المصادقة المرنة والمركزية عبر أساطيل الأجهزة المتنوعة وحالات الاستخدام.
المتطلبات الأساسية
- مساحة اسم شبكة الأحداث مع هوية مدارة معينة من قبل النظام أو معينة من قبل المستخدم.
- خطاف ويب خارجي أو دالة Azure.
- الوصول الممنوح للهوية المدارة لمساحة الاسم Event Grid إلى دالة Azure أو خطاف الويب.
الخطوات عالية المستوى
لاستخدام مصادقة webhook المخصصة لمساحات الأسماء، اتبع الخطوات التالية:
- إنشاء مساحة اسم وتكوين الموارد الفرعية الخاصة بها.
- قم بتمكين هوية مدارة في مساحة اسم شبكة الأحداث.
- امنح الهوية المدارة حق الوصول إلى وظيفة Azure أو خطاف الويب.
- قم بتكوين إعدادات الإخطار على الويب المخصصة على مساحة اسم شبكة الأحداث.
- قم بتوصيل عملائك بمساحة اسم Event Grid والحصول على مصادقة عبر خطاف الويب أو الوظيفة.
إنشاء مساحة اسم وتكوين مواردها الفرعية
لإنشاء مساحة اسم وتكوين مواردها الفرعية، اتبع الإرشادات الواردة في التشغيل السريع: نشر رسائل MQTT والاشتراك فيها على مساحة اسم شبكة الأحداث باستخدام مدخل Microsoft Azure. تخطي خطوات إنشاء شهادة وعميل لأن هويات العميل تأتي من الرمز المميز المقدم. تستند سمات العميل إلى المطالبات المخصصة في الرمز المميز للعميل. يتم استخدام سمات العميل في استعلام مجموعة العميل ومتغيرات قالب الموضوع وتكوين إثراء التوجيه.
تمكين هوية مدارة على مساحة اسم شبكة الأحداث
لتمكين هوية مدارة معينة من قبل النظام على مساحة اسم شبكة الأحداث، استخدم الأمر التالي:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
للحصول على معلومات حول كيفية تكوين النظام والهويات المعينة من قبل المستخدم باستخدام مدخل Microsoft Azure، راجع تمكين الهوية المدارة لمساحة اسم شبكة الأحداث.
تطبيقات
الخيار 1: Webhook عبر تنفيذ دالات Azure (تطبيق Microsoft Entra)
يمكن دالات Azure استضافة منطق webhook باستخدام Microsoft.Identity.Web للتحقق من صحة الرمز تلقائيا. تحتاج إلى تسجيل تطبيق Microsoft Entra لواجهة برمجة تطبيقات webhook للتحقق من رموز Event Grid التي تتصل بها. تسجيل التطبيق يحتوي على معرف التطبيق URI لإصدار الرمز. الجانب العميل (شبكة الأحداث) لديه بالفعل هوية مدارة.
الايجابيات:
- لا يوجد بنية تحتية لإدارتها
- مساعدو المصادقة المدمجين (
Microsoft.Identity.Web) - متين، قابل للتوسع، وفعال من حيث التكلفة
يجب أن تقوم الدالة بالعمليات التالية:
- تحقق من رمز المتصل من هوية Event Grid.
- تحقق من رمز الويب JSON الخاص بالعميل (JWT).
- أعيد رد السماح أو رفض رد JSON.
الخيار الثاني: تنفيذ نقطة نهاية HTTPS خارجية
يمكن أن يكون هذا التنفيذ أي نقطة نهاية خارجي (أي سحابة، أي خلفية)، باستخدام التحقق من JWT من Microsoft Entra ID باستخدام Microsoft.IdentityModel المكتبات.
استخدم أي وقت تشغيل: .NET، Node.js، Java، أو Python.
المتطلبات الرئيسية:
يجب أن تكون نقطة النهاية HTTPS.
يجب أن يتحقق من صحة JWT المتصل.
يجب أن يتحقق من صحة الجهاز JWT.
يجب أن يستجيب خلال المهلة المستقطعة (يوصى بحوالي 5 ثوان).
منح الهوية المدارة حق الوصول المناسب إلى وظيفة أو خطاف ويب
امنح الهوية المدارة لمساحة اسم Event Grid الوصول المناسب إلى دالة Azure الهدف أو خطاف الويب.
لإعداد مصادقة مخصصة لوظيفة Azure، اتبع الخطوات التالية.
إنشاء تطبيق Microsoft Entra
في صفحة نظرة عامة للتطبيق، قم بتدوين قيمة معرف التطبيق (العميل).
في القائمة اليمنى، حدد عرض واجهة برمجة تطبيقات. بجوار معرف التطبيق URI، حدد إضافة.
قم بتدوين قيمة URI لمعرف التطبيق في جزء تحرير معرف التطبيق URI ، ثم حدد حفظ.
إعداد المصادقة لدالة Azure
إذا كانت لديك دالة Azure أساسية تم إنشاؤها من مدخل Microsoft Azure، فقم بإعداد المصادقة والتحقق من صحة الرمز المميز لمعرف Microsoft Entra الذي تم إنشاؤه باستخدام هوية مدارة.
انتقل إلى تطبيق دالات Azure.
في القائمة اليمنى، حدد Authentication، ثم حدد Add identity provider.
في الصفحة إضافة موفر هوية ، بالنسبة إلى موفر الهوية، حدد Microsoft من القائمة المنسدلة.
في قسم تسجيل التطبيق ، حدد قيما للخصائص التالية:
في قسم الجماهير المسموح بها بالرمز ، أدخل جماهير الرمز المسموح بها. للتوضيح، أدخل معرف التطبيق URI لتطبيق Microsoft Entra الذي أشرت إليه سابقا. يستخدم جمهور الرمز للتحقق من صحة الرمز الوارد من شبكة الحدث.
في قسم الفحوصات الإضافية ، اتبع هذه الخطوات:
في قسم إعدادات مصادقة خدمة التطبيقات ، اتبع الخطوات التالية:
اختر إعدادات أخرى استنادا إلى متطلباتك الخاصة، ثم حدد إضافة.
إنشاء واستخدام رمز Microsoft Entra ID
الآن، قم بإنشاء واستخدام الرمز المميز لمعرف Microsoft Entra.
- إنشاء رمز Microsoft Entra ID باستخدام الهوية المدارة مع معرف التطبيق URI (
api://<ClientID>) كمورد. - استخدم هذا الرمز المميز لاستدعاء دالة Azure عن طريق تضمينها في عنوان الطلب.
تكوين إعدادات مصادقة إخطار على الويب المخصصة على مساحة اسم شبكة الأحداث
قم بتكوين إعدادات مصادقة الإخطار على الويب المخصصة على مساحة اسم شبكة الأحداث باستخدام مدخل Microsoft Azure وAzure CLI. يمكنك إنشاء مساحة الاسم أولا ثم تحديثها.
استخدام مدخل Microsoft Azure
انتقل إلى مساحة اسم شبكة الأحداث في مدخل Microsoft Azure.
في صفحة Event Grid Namespace ، حدد Configuration في القائمة اليسرى.
في قسم مصادقة الإخطار على الويب المخصصة ، حدد قيما للخصائص التالية:
- نوع الهوية المدارة: حدد المستخدم المخصص.
- عنوان URL لخطاف الويب: أدخل قيمة نقطة نهاية عنوان URL حيث ترسل خدمة Event Grid طلبات إخطار ويب مصادق عليها باستخدام الهوية المدارة المحددة.
- عنوان URL لجمهور الرمز المميز: أدخل قيمة معرف تطبيق Microsoft Entra أو URI للحصول على رمز الوصول المميز ليتم تضمينه كرمز مميز للحامل في طلبات التسليم.
- معرف مستأجر معرف Microsoft Entra: أدخل قيمة معرف مستأجر Microsoft Entra المستخدم للحصول على الرمز المميز للحامل لتسليم خطاف الويب المصادق عليه.
حدد تطبيق.
استخدام Azure CLI
لتحديث مساحة الاسم الخاصة بك باستخدام تكوين مصادقة الإخطار على الويب المخصص، استخدم الأمر التالي:
az eventgrid namespace update \
--resource-group <resource-group-name> \
--name <namespace-name> \
--api-version 2025-04-01-preview \
--identity-type UserAssigned \
--identity-user-assigned-identities "/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX={}" \
--set properties.isZoneRedundant=true \
properties.topicSpacesConfiguration.state=Enabled \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.type=UserAssigned \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.userAssignedIdentity="/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.endpointUrl="https://XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryApplicationIdOrUri="api://XXXXXXXXXXX/.default" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryTenantId="XXXXXXXXXXX"
استبدل <NAMESPACE_NAME> قيمك الفعلية وبمعها <RESOURCE_GROUP_NAME> . املأ العناصر النائبة في الاشتراك ومجموعة الموارد والهوية ومعرف التطبيق وعنوان URL ومعرف المستأجر. لتحسين أداء وموثوقية المصادقة المعتمدة على webhook لوسيط Event Grid MQTT، نوصي بتفعيل دعم HTTP/2 لنقطة نهاية webhook الخاصة بك.
تفاصيل Webhook API
رؤوس الطلبات
يرسل Azure Event Grid الرؤوس التالية في الطلب إلى webhook:
Authorization: Bearer <token>
الرمز المميز هو رمز Microsoft Entra المميز للهوية المدارة التي تم تكوينها لاستدعاء خطاف الويب.
حمولة الطلب
{
"clientId": "<string>",
"userName": "<string>",
"password": "<base64 encoded bytes>",
"authenticationMethod": "<string>",
"authenticationData": "<base64 encoded bytes>",
"clientCertificate": "<certificate in PEM format>",
"clientCertificateChain": "<certificates from chain in PEM format>"
}
أوصاف حقل الحمولة
| الحقل | مطلوب/اختياري | الوصف |
|---|---|---|
clientId |
مطلوب | معرف العميل من حزمة MQTT CONNECT. |
userName |
اختياري | اسم المستخدم من حزمة MQTT CONNECT. |
password |
اختياري | كلمة المرور من حزمة MQTT CONNECT في ترميز Base64. |
authenticationMethod |
اختياري | أسلوب المصادقة من حزمة MQTT CONNECT (MQTT5 فقط). |
authenticationData |
اختياري | بيانات المصادقة من حزمة MQTT CONNECT في ترميز Base64 (MQTT5 فقط). |
clientCertificate |
اختياري | شهادة العميل بصيغة البريد Privacy-Enhanced (PEM). |
clientCertificateChain |
اختياري | الشهادات الأخرى التي يقدمها العميل مطلوبة لإنشاء السلسلة من شهادة العميل إلى شهادة المرجع المصدق. |
حمولة الاستجابة
استجابة ناجحة
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "allow",
"clientAuthenticationName": "<string>",
"attributes": {
"attr": "<int/string/array_of_strings>",
...
},
"expiration": "<unix time format>"
}
الرد مرفوض
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
رموز الخطأ:
| نتيجة المصادقة | استجابة الدالة | رمز سبب شبكة الأحداث MQTT |
|---|---|---|
| رفض صريح للتفويض | "decision": "deny" |
غير مصرح به |
| رمز غير صالح / منتهية الصلاحية | "decision": "deny" |
غير مصرح به |
| مهلة الوظيفة | غير متوفر | الخادم غير متوفر |
| استثناء الدالة / تعطل | غير متوفر | الخادم غير متوفر |
| فشل المنصة المؤقتة | غير متوفر | الخادم غير متوفر |
| خطأ في معالجة الوسيط الداخلي | غير متوفر | الخادم غير متوفر |
أوصاف حقل الاستجابة
| الحقل | النوع | مطلوب متى | الوصف |
|---|---|---|---|
decision |
الوتر (allow | deny) |
دائما مطلوب | قرار المصادقة أعادته الخدمة. القيم المسموح بها هي allow أو deny. |
clientAuthenticationName |
الوتر | مطلوب إذا كان decision = allow |
اسم هوية العميل (على سبيل المثال، معرف الجهاز أو معرف العميل). |
attributes |
كائن (قاموس) | اختياري إذا كان decision = allow |
أزواج القيم الرئيسية تمثل سمات إضافية. يمكن أن تكون القيم int أو string أو مصفوفة سلاسل نصية. |
expiration |
العدد الصحيح (طابع زمني يونكس، ثواني) | اختياري إذا كان decision = allow |
وقت انتهاء صلاحية قرار التفويض، معبرا عنه ب "وقت يونكس" (ثوان منذ الحقبة). مثال:1713782400. |
errorReason |
الوتر | اختياري إذا كان decision = deny |
رسالة خطأ تشرح سبب رفض الطلب. يتم تسجيل هذه القيمة للتشخيص. |
أمثلة على أنواع السمات المتوافقة
"num_attr_pos": 1,
"num_attr_neg": -1,
"str_attr": "str_value",
"str_list_attr": [
"str_value_1",
"str_value_2"
]
يتم استخدام جميع أنواع البيانات الصحيحة (الرقم الذي يناسبك <int32/string/array_of_strings>) كسمات. في المثال، num_attr_posتحتوي المطالبات على أنواع num_attr_negstr_attrstr_list_attrبيانات صحيحة وتستخدم كسمات.