المصادقة باستخدام مساحات الأسماء باستخدام رموز ويب JSON المميزة
توضح هذه المقالة كيفية المصادقة باستخدام مساحة اسم Azure Event Grid باستخدام رموز ويب JSON المميزة.
يدعم وسيط MQTT الخاص ب Azure Event Grid مصادقة JWT المخصصة، والتي تمكن العملاء من الاتصال والمصادقة باستخدام مساحة اسم Event Grid باستخدام رموز JSON المميزة على الويب التي يتم إصدارها من قبل أي موفر هوية، بالإضافة إلى معرف Microsoft Entra.
المتطلبات الأساسية
لاستخدام مصادقة JWT المخصصة لمساحات الأسماء، تحتاج إلى المتطلبات الأساسية التالية:
- موفر الهوية الذي يمكنه إصدار رموز ويب Json المميزة.
- شهادة المرجع المصدق التي تتضمن المفاتيح العامة المستخدمة للتحقق من صحة رموز العميل المميزة.
- حساب Azure Key Vault لاستضافة شهادة المرجع المصدق التي تتضمن مفاتيحك العامة.
الخطوات عالية المستوى
لاستخدام مصادقة JWT المخصصة لمساحات الأسماء، اتبع الخطوات التالية:
- إنشاء مساحة اسم وتكوين الموارد الفرعية الخاصة بها.
- تمكين الهوية المدارة على مساحة اسم Event Grid.
- إنشاء حساب Azure Key Vault الذي يستضيف شهادة المرجع المصدق التي تتضمن المفاتيح العامة الخاصة بك.
- أضف تعيين الدور في Azure Key Vault للهوية المدارة لمساحة الاسم.
- تكوين إعدادات المصادقة المخصصة على مساحة اسم شبكة الأحداث
- يمكن لعملائك الاتصال بمساحة اسم Event Grid باستخدام الرموز المميزة التي يوفرها موفر الهوية.
إنشاء مساحة اسم وتكوين مواردها الفرعية
اتبع الإرشادات من التشغيل السريع: نشر رسائل MQTT والاشتراك فيها على شبكة الأحداث Namespace باستخدام مدخل Microsoft Azure لإنشاء مساحة اسم وتكوين مواردها الفرعية. تخطي خطوات إنشاء الشهادة والعميل حيث تأتي هويات العميل من الرمز المميز المقدم. تستند سمات العميل إلى المطالبات المخصصة في الرمز المميز للعميل. يتم استخدام سمات العميل في استعلام مجموعة العميل ومتغيرات قالب الموضوع وتكوين إثراء التوجيه.
تمكين الهوية المدارة على مساحة اسم شبكة الأحداث
تستخدم مساحة الاسم الهوية المدارة للوصول إلى مثيل Azure Key Vault للحصول على شهادة الخادم لمجالك المخصص. استخدم الأمر التالي لتمكين الهوية المدارة المعينة من قبل النظام على مساحة اسم شبكة الأحداث:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
للحصول على معلومات حول تكوين النظام والهويات المعينة من قبل المستخدم باستخدام مدخل Microsoft Azure، راجع تمكين الهوية المدارة لمساحة اسم شبكة الأحداث.
إنشاء حساب Azure Key Vault وتحميل شهادة الخادم
استخدم الأمر التالي لإنشاء حساب Azure Key Vault:
az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseaup"
استخدم الأمر التالي لاستيراد شهادة إلى Azure Key Vault
az keyvault certificate import --vault-name "<your-key-vault-name>" -n "<cert name>" -f "<path to your certificate pem file> "
إشعار
يجب أن تتضمن شهادتك اسم المجال في اسم بديل الموضوع ل DNS. لمزيد من المعلومات، راجع البرنامج التعليمي: استيراد شهادة في Azure Key Vault.
إضافة تعيين دور في Azure Key Vault للهوية المدارة لمساحة الاسم
تحتاج إلى توفير الوصول إلى مساحة الاسم للوصول إلى حساب Azure Key Vault الخاص بك باستخدام الخطوات التالية:
الحصول على معرف الهوية الأساسي لمساحة اسم شبكة الأحداث باستخدام الأمر التالي
$principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv)
احصل على معرف مورد Azure Key vault.
$keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv)
أضف تعيين الدور في Key Vault للهوية المدارة لمساحة الاسم.
az role assignment create --role "Key Vault Certificate User" --assignee $principalId --scope $keyVaultResourceId
لمزيد من المعلومات حول الوصول إلى Key Vault وتجربة المدخل، راجع توفير الوصول إلى مفاتيح Key Vault والشهادات والأسرار باستخدام التحكم في الوصول المستند إلى دور Azure.
تكوين إعدادات المصادقة المخصصة على مساحة اسم شبكة الأحداث
في هذه الخطوة، يمكنك تكوين إعدادات المصادقة المخصصة على مساحة اسم Event Grid باستخدام مدخل Microsoft Azure وAzure CLI. تحتاج إلى إنشاء مساحة الاسم أولا ثم تحديثها باستخدام الخطوات التالية.
استخدام مدخل Azure
في صفحة Event Grid Namespace ، حدد Configuration في القائمة اليسرى.
في قسم Custom JWT authentication ، حدد قيما للخصائص التالية:
حدد تمكين مصادقة JWT المخصصة.
مصدر الرمز المميز: أدخل قيمة مطالبات المصدر لرموز JWT المميزة، التي يقدمها عملاء MQTT.
حدد Add issuer certificate
في الصفحة الجديدة، حدد قيما للخصائص التالية.
عنوان URL للشهادة: معرف الشهادة لشهادة المصدر في Azure Key Vault التي قمت بإنشائها. يمكنك اختيار Select a certificate using a key vault بدلا من ذلك لتحديد الشهادة وkey vault من اشتراكاتك.
الهوية: الهوية المستخدمة للمصادقة مع Key Vault للوصول إلى شهادة المصدر التي تم إنشاؤها.
حدد إضافة.
مرة أخرى في صفحة التكوين ، حدد تطبيق.
إشعار
يمكنك إضافة ما يصل إلى شهادتين
iss
لأغراض تدوير الشهادة/المفتاح.
استخدام Azure CLI
استخدم الأمر التالي لتحديث مساحة الاسم الخاصة بك بتكوين مصادقة JWT المخصص.
az resource update --resource-type Microsoft.EventGrid/namespaces --api-version 2024-06-01-preview --ids /subscriptions/69f9e5ac-ca07-42cc-98d2-4718d033bcc5/resourceGroups/dummy-cd-test/providers/Microsoft.EventGrid/namespaces/dummy-cd-test2 --set properties.topicSpacesConfiguration.clientAuthentication='{\"customJwtAuthentication\":{\"tokenIssuer\":\"dmpypin-issuer\",\"issuerCertificates\":[{\"certificateUrl\":\"https://dummyCert-cd-test.vault.azure.net/certificates/dummy-cd-test/4f844b284afd487e9bba0831191087br1\",\"identity\":{\"type\":\"SystemAssigned\"}}]}}'
تنسيق JSON Web Token
تنقسم رموز ويب Json المميزة إلى قسمي JWT Header وJWT payload.
رأس JWT
يجب أن يحتوي العنوان على حقول و alg
على الأقلtyp
. typ
يجب أن يكون JWS
دائما ويجب alg
أن يكون RS256
دائما . يجب أن يكون رأس الرمز المميز كما يلي:
{
"typ": "JWT",
"alg": "RS256"
}
حمولة JWT
تتطلب Event Grid المطالبات التالية: iss
، sub
، aud
، exp
، . nbf
Name | الوصف |
---|---|
iss |
مصدر الشهادة. يجب أن تتطابق القيمة في JWT مع المصدر في تكوين مساحة اسم شبكة الأحداث لمصادقة JWT المخصصة. |
sub |
الموضوع. يتم استخدام القيمة كاسم هوية المصادقة. |
aud |
الجمهور. يمكن أن تكون القيمة سلسلة أو صفيف من السلاسل. يجب أن تحتوي القيمة على اسم مضيف مساحة اسم شبكة الأحداث القياسية و/أو المجال المخصص لمساحة اسم شبكة الأحداث هذه (إذا تم تكوينها). يمكن أن يحتوي الجمهور على سلاسل أخرى، ولكننا نطلب من واحد على الأقل من هذه السلاسل أن يكون اسم مضيف مساحة اسم شبكة الأحداث قياسيا أو مجالا مخصصا لمساحة الاسم هذه. |
exp |
انقضاء. وقت Unix عند انتهاء صلاحية JWT. |
nbf |
ليس من قبل. وقت الوحدة عندما يصبح JWT صالحا. |
تقوم Event Grid بتعيين جميع المطالبات إلى سمات العميل إذا كان لديها أحد الأنواع التالية: int32
، ، string
. array of strings
يتم استبعاد المطالبات iss
القياسية و sub
aud
و exp
و nbf
و من سمات العميل. في مثال JWT التالي، يتم تحويل ثلاث مطالبات فقط إلى سمات العميل، ، num_attr
، str_list_attr
str_attr
، لأنها تحتوي على أنواع int32
صحيحة ، ، string
. array of strings
incorrect_attr_1
، incorrect_attr_2
، لا يتم تحويلها إلى سمات العميل، لأنها تحتوي على أنواع خاطئة: float
، ، array of integers
. object
incorrect_attr_3
{
"iss": "correct_issuer",
"sub": "d1",
"aud": "testns.mqtt-broker-int.azure.net",
"exp": 1712876224,
"nbf": 1712869024,
"num_attr": 1,
"str_attr": "some string",
"str_list_attr": [
"string 1",
"string 2"
],
"incorrect_attr_1": 1.23,
"incorrect_attr_2": [
1,
2,
3
],
"incorrect_attr_3": {
"field": "value"
}
}