اقرأ باللغة الإنجليزية

مشاركة عبر


البرنامج التعليمي: مصادقة العميل باستخدام Spring Cloud Gateway على Azure Spring Apps

ملاحظة

سيتم إهمال الخطط الأساسية والقياسية والمؤسسة بدءا من منتصف مارس 2025، مع فترة تقاعد 3 سنوات. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع إعلان إيقاف Azure Spring Apps.

سيتم إهمال الاستهلاك القياسي والخطة المخصصة بدءا من 30 سبتمبر 2024، مع إيقاف التشغيل الكامل بعد ستة أشهر. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع ترحيل استهلاك Azure Spring Apps القياسي وخطة مخصصة إلى Azure Container Apps.

تنطبق هذه المقالة على:✅ الاستهلاك القياسي والمخصص (معاينة)

يوضح لك هذا التشغيل السريع كيفية تأمين الاتصال بين تطبيق العميل وتطبيق الخدمات المصغرة المستضاف على Azure Spring Apps ومحمي بتطبيق Spring Cloud Gateway. يتم التحقق من تطبيق العميل ككيان أمان لبدء الاتصال مع الخدمة المصغرة المنشورة على Azure Spring Apps، باستخدام التطبيق الذي تم إنشاؤه باستخدام Spring Cloud Gateway. تستخدم هذه الطريقة ميزات ترحيل الرمز المميز ل Spring Cloud Gateway وخادم موارد Spring Security لعمليات المصادقة والتخويل، التي تحققت من خلال تنفيذ تدفق بيانات اعتماد العميل OAuth 2.0.

تظهر القائمة التالية تكوين نموذج المشروع:

  • Books SPA: يتفاعل تطبيق الصفحة الواحدة (SPA) هذا، المستضاف محليا، مع خدمة الكتب المصغرة لإضافة الكتب أو البحث فيها.
  • كتب الخدمات المصغرة:
    • تطبيق Spring Cloud Gateway مستضاف في Azure Spring Apps. يعمل هذا التطبيق كبوابة لواجهات برمجة تطبيقات Books RESTful.
    • تطبيق Spring Boot RESTful API مستضاف في Azure Spring Apps. يخزن هذا التطبيق معلومات الكتاب في قاعدة بيانات H2. تعرض خدمة الكتب نقطتي نهاية REST لكتابة الكتب وقراءتها.

1. المتطلبات الأساسية

2. إعداد مشروع الربيع

استخدم الخطوات التالية لاستنساخ التطبيق وتشغيله محليا:

  1. استخدم الأمر التالي لاستنساخ نموذج المشروع من GitHub:

    Bash
    git clone https://github.com/Azure-Samples/azure-spring-apps-sso-client-credential.git -b consumption-plan
    
  2. استخدم الأمر التالي لإنشاء خدمات الواجهة الخلفية للكتب:

    Bash
    cd azure-spring-apps-sso-client-credential
    ./mvnw clean package
    
  3. أدخل دليل مشروع SPA، واستخدم الأمر التالي لتثبيت التبعيات:

    Bash
    npm install @azure/msal-node
    

3. إعداد بيئة السحابة

الموارد الرئيسية المطلوبة لتشغيل هذا النموذج هي مثيل Azure Spring Apps وقاعدة بيانات Azure لمثيل PostgreSQL. يوفر هذا القسم الخطوات لإنشاء هذه الموارد.

3.1. سجِّل الدخول إلى مدخل Azure

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

3.2. إنشاء مثيل Azure Spring Apps

استخدم الخطوات التالية لإنشاء مثيل خدمة:

  1. حدد Create a resource في زاوية مدخل Microsoft Azure.

  2. حدد حساب>Azure Spring Apps.

    لقطة شاشة لمدخل Azure تعرض صفحة إنشاء مورد مع تمييز Azure Spring Apps.

  3. املأ نموذج «Basics» بالمعلومات التالية:

    الإعدادات القيمة المقترحة ‏‏الوصف
    الاشتراك اسم الاشتراك اشتراك Azure الذي تريد استخدامه لخادمك. إذا كان لديك اشتراكات متعددة، فاختر الاشتراك الذي تود الدفع فيه مقابل المورد.
    مجموعة الموارد myresourcegroup اسم مجموعة موارد جديد أو اسم موجود من اشتراكك.
    الاسم myasa اسم فريد يعرف خدمة Azure Spring Apps. يجب أن يتراوح الاسم بين 4 أحرف و32 حرفاً، ويجب أن يحتوي على أحرف صغيرة وأرقام وواصلات فقط. يجب أن يكون الحرف الأول من اسم الخدمة حرفاً ويجب أن يكون الحرف الأخير إما حرفاً أو رقماً.
    تخطيط الاستهلاك القياسي والمخصص (معاينة) تحدد خطة التسعير الموارد والتكلفة المرتبطة بالمثيل الخاص بك.
    المنطقة المنطقة الأقرب إلى مستخدميك الموقع الأقرب إلى المستخدمين.
    بيئة تطبيقات الحاوية myacaenv حدد مثيل بيئة Container Apps لمشاركة نفس الشبكة الظاهرية مع الخدمات والموارد الأخرى.

    لقطة شاشة لمدخل Azure تعرض صفحة إنشاء خطة استهلاك Azure Spring Apps.

    استخدم الجدول التالي كدليل لإنشاء بيئة تطبيقات الحاوية:

    الإعدادات القيمة المقترحة ‏‏الوصف
    اسم البيئة myacaenv اسم فريد يعرف خدمة بيئة Azure Container Apps.
    تخطيط استهلاك تحدد خطة التسعير الموارد والتكلفة المرتبطة بالمثيل الخاص بك.
    المنطقة زائدة عن الحاجة Disabled ما إذا كنت تريد إنشاء خدمة Container Apps Environment في منطقة توفر Azure.

    لقطة شاشة لمدخل Azure تعرض صفحة إنشاء تطبيقات حاوية Azure.

    هام

    يحتوي ملف تعريف حمل عمل الاستهلاك على نموذج فوترة الدفع أولا بأول، دون تكلفة بدء. تتم محاسبتك على ملف تعريف حمل العمل المخصص استنادا إلى الموارد المقدمة. لمزيد من المعلومات، راجع ملفات تعريف حمل العمل في بيئات بنية الخطة المخصصة + الاستهلاك في Azure Container Apps (معاينة) وأسعار Azure Spring Apps.

  4. حدد مراجعة وإنشاء لمراجعة التحديدات. حدد Create لتوفير مثيل Azure Spring Apps.

  5. من شريط الأدوات، حدد رمز «Notifications» (جرس) لمراقبة عملية النشر. بعد الانتهاء من النشر، يمكنك تحديد تثبيت في لوحة المعلومات، مما يؤدي إلى إنشاء لوحة لهذه الخدمة على لوحة معلومات مدخل Microsoft Azure كاختصار لصفحة نظرة عامة على الخدمة. حدد الانتقال إلى المورد لفتح صفحة نظرة عامة على الخدمة.

    لقطة شاشة لمدخل Azure تعرض صفحة Overview مع فتح جزء Notifications.

  6. استخدم الأمر التالي لتمكين خادم Eureka. تأكد من استبدال العناصر النائبة بالقيم الخاصة بك التي قمت بإنشائها في الخطوة السابقة.

    Azure CLI
    az spring eureka-server enable \
        --resource-group <resource-group-name> \
        --name <Azure-Spring-Apps-instance-name>
    

3.3. تسجيل تطبيق الكتب

يوفر هذا القسم خطوات تسجيل تطبيق لإضافة أدوار التطبيق في معرف Microsoft Entra، والذي يستخدم لحماية واجهات برمجة تطبيقات RESTful في Azure Spring Apps.

  1. انتقل إلى الصفحة الرئيسية لمدخل Azure.

  2. إذا كان لديك حق الوصول إلى عدة مستأجرين، فاستخدم عامل تصفية الدليل + الاشتراك ( ) لتحديد المستأجر الذي تريد تسجيل تطبيق فيه.

  3. ابحث عن Microsoft Entra ID وحدده.

  4. ضمن Manage، حدد App registrationsتسجيل >جديد.

  5. أدخل اسما لتطبيقك في حقل الاسم ، على سبيل المثال الكتب. قد يرى مستخدمو التطبيق الخاص بك هذا الاسم، ويمكنك تغييره لاحقًا.

  6. بالنسبة إلى أنواع الحسابات المدعومة، حدد الحسابات في هذا الدليل التنظيمي فقط.

  7. حدد Register لإنشاء التطبيق.

  8. في صفحة "Overview" للتطبيق، ابحث عن قيمة Application (client) ID وسجله للاستخدام لاحقاً. تحتاج إليه لتكوين ملف تكوين YAML لهذا المشروع.

  9. ضمن إدارة، حدد كشف واجهة برمجة التطبيقات، وابحث عن معرف التطبيق URI في بداية الصفحة، ثم حدد إضافة.

  10. في صفحة تحرير معرف التطبيق URI ، اقبل معرف التطبيق المقترح URI (api://{client ID}) أو استخدم اسما ذا معنى بدلا من معرف العميل، مثل api://books، ثم حدد حفظ.

  11. ضمن إدارة، حدد أدوار>التطبيق إنشاء دور التطبيق، ثم أدخل المعلومات التالية:

    • بالنسبة إلى Display name، أدخل Write.
    • بالنسبة إلى أنواع الأعضاء المسموح بها، حدد التطبيقات.
    • بالنسبة للقيمة، أدخل Books.Write.
    • بالنسبة للوصف، أدخل إضافة كتب.
  12. كرر الخطوة السابقة لإضافة دور تطبيق آخر: Books.Read.

    لقطة شاشة لصفحة تسجيل تطبيق الكتب التي تعرض أدوار التطبيق.

3.4. تسجيل طلب SPA

يعمل تطبيق Books RESTful API كخادم موارد، وهو محمي بواسطة معرف Microsoft Entra. قبل الحصول على رمز مميز للوصول، يطلب منك تسجيل تطبيق آخر في معرف Microsoft Entra ومنح أذونات لتطبيق العميل، والذي يسمى SPA.

  1. ارجع إلى المستأجر الخاص بك في معرف Microsoft Entra.

  2. ضمن Manage، حدد App registrationsتسجيل >جديد.

  3. أدخل اسما لتطبيقك في حقل الاسم ، على سبيل المثال SPA.

  4. بالنسبة إلى أنواع الحسابات المدعومة، استخدم الحسابات الافتراضية في هذا الدليل التنظيمي فقط.

  5. حدد Register لإنشاء التطبيق.

  6. في صفحة "Overview" للتطبيق، ابحث عن قيمة Application (client) ID وسجله للاستخدام لاحقاً. تحتاج إليها للحصول على الرمز المميز للوصول.

  7. حدد أذونات واجهة برمجة التطبيقات إضافة واجهات>برمجة تطبيقات الأذونات>التي تستخدمها مؤسستي. Books حدد التطبيق الذي قمت بتسجيله سابقا، وحدد الأذونات Books.Read و Books.Write، ثم حدد Add permissions.

  8. حدد منح موافقة المسؤول لاسم <> المستأجر لمنح موافقة المسؤول على الأذونات التي أضفتها.

    لقطة شاشة لصفحة أذونات واجهة برمجة تطبيقات SPA التي تعرض أذونات واجهة برمجة التطبيقات لتطبيق ويب.

  9. انتقل إلى Certificates and secrets ثم حدد New client secret.

  10. في صفحة إضافة سر عميل، أدخل وصفا للبيانات السرية، وحدد تاريخ انتهاء صلاحية، ثم حدد إضافة.

  11. ابحث عن قيمة السر ثم سجلها لاستخدامها لاحقا. تحتاج إليها للحصول على رمز مميز للوصول.

3.5. تحديث تكوين تطبيق خدمة الكتب

حدد موقع ملف books-service books-service/src/main/resources/application.yml للتطبيق. قم بتحديث التكوين في spring.cloud.azure.active-directory القسم لمطابقة المثال التالي. تأكد من استبدال العناصر النائبة بالقيم التي قمت بإنشائها مسبقا.

YAML
spring:
  cloud:
    azure:
      active-directory:
        credential:
          client-id: <your-application-ID-of-Books>
        app-id-uri: <your-application-ID-URI-of-Books>

استخدم الأمر التالي لإعادة إنشاء نموذج المشروع:

Bash
./mvnw clean package

4. نشر التطبيقات إلى Azure Spring Apps

توضح لك الخطوات التالية كيفية نشر التطبيقات إلى Azure.

4.1. نشر تطبيقات الخدمات المصغرة إلى Azure Spring Apps

استخدم الخطوات التالية لنشر التطبيقات في Azure Spring Apps باستخدام المكون الإضافي Maven لتطبيقات Azure Spring:

  1. انتقل إلى نموذج دليل المشروع ثم استخدم الأمر التالي لتكوين التطبيق في Azure Spring Apps:

    Bash
    ./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.18.0:config
    

    تصف القائمة التالية تفاعلات الأوامر:

    • حدد الوحدات النمطية التابعة للتكوين (أرقام الإدخال مفصولة بفاوصلة، على سبيل المثال: [1-2,4,6]، ENTER لتحديد الكل): اضغط على مفتاح الإدخال Enter لتحديد الكل.
    • تسجيل الدخول إلى OAuth2: تخويل تسجيل الدخول إلى Azure استنادا إلى بروتوكول OAuth2.
    • حدد subscription: حدد رقم قائمة الاشتراك لمثيل Azure Spring Apps الذي أنشأته، والذي يتم تعيينه افتراضيا إلى الاشتراك الأول في القائمة. إذا كنت تستخدم الرقم الافتراضي، فاضغط على مفتاح الإدخال Enter مباشرة.
    • حدد Azure Spring Apps للنشر: حدد رقم قائمة مثيل Azure Spring Apps الذي أنشأته. إذا كنت تستخدم الرقم الافتراضي، فاضغط على مفتاح الإدخال Enter مباشرة.
    • حدد التطبيقات لعرض الوصول العام: (أرقام الإدخال مفصولة بفاوصلة، على سبيل المثال: [1-2,4,6]، ENTER لتحديد NONE): أدخل 1 ل gateway-service.
    • تأكيد لحفظ جميع التكوينات أعلاه (Y/n): أدخل y. إذا أدخلت n، فلن يتم حفظ التكوين في ملفات POM.
  2. استخدم الأمر التالي لنشر التطبيق:

    Bash
    ./mvnw azure-spring-apps:deploy
    

    تصف القائمة التالية تفاعل الأمر:

    • تسجيل الدخول إلى OAuth2: تحتاج إلى تخويل تسجيل الدخول إلى Azure استنادا إلى بروتوكول OAuth2.

    بعد تنفيذ الأمر، يمكنك مشاهدة رسائل السجل التالية، والتي تشير إلى نجاح النشر.

    Output
    [INFO] Getting public url of app(gateway-service)...
    [INFO] Application url: https://gateway-service.xxxxxxxxxxxxxx-xxxxxxxx.eastasia.azurecontainerapps.io
    
    ...
    
    [INFO] Artifact(books-service-0.0.1-SNAPSHOT.jar) is uploaded and deployment(default) is successfully updated.
    
    ...
    

    عنوان URL لتطبيق الإخراج هو نقطة النهاية الأساسية للوصول إلى تطبيق ToDo RESTful API.

4.2. تشغيل تطبيق SPA محليا

قم بتحديث التكوين في SPA ملف البرنامج النصي للتطبيق spa/server.js لمطابقة المثال التالي. تأكد من استبدال العناصر النائبة بالقيم الخاصة بك التي قمت بإنشائها في الخطوة السابقة.

JavaScript
const SpringCloudGatewayURL = "<URL exposed by app gateway-service>"

const msalConfig = {
    auth: {
        clientId: "< SPA App Registration ClientId>",
        authority: "https://login.microsoftonline.com/< TenantId >/",
        clientSecret: "<SPA App Registration ClientSecret>",
    },
};

const tokenRequest = {
    scopes: ["<Application ID URI of Books>/.default"]
};

في دليل مشروع SPA، استخدم الأمر التالي للتشغيل محليا:

shell
node server.js

ملاحظة

تطبيق SPA هو تطبيق ويب ثابت، والذي يمكن نشره على أي خادم ويب.

5. التحقق من صحة التطبيق

يمكنك الوصول إلى تطبيق Books SPA الذي يتصل بواجهات برمجة تطبيقات Books RESTful من خلال gateway-service التطبيق.

  1. انتقل إلى http://localhost:3000 في المستعرض للوصول إلى التطبيق.

  2. أدخل قيم الكاتب والعنوان، ثم حدد إضافة كتاب. ترى استجابة مشابهة للمثال التالي:

    Output
    Book added successfully: {"id":1,"author":"Jeff Black","title":"Spring In Action"}
    

6. حذف الموارد

يمكنك حذف مجموعة موارد Azure، التي تتضمن كافة الموارد الموجودة في مجموعة الموارد. استخدم الخطوات التالية لحذف مجموعة الموارد بأكملها، بما في ذلك الخدمة التي تم إنشاؤها حديثا:

  1. حدد موقع مجموعة الموارد الخاصة بك في مدخل Microsoft Azure.

  2. حدد Resource groups، ثم حدد اسم مجموعة الموارد الخاصة بك، على سبيل المثال، myresourcegroup.

  3. في صفحة مجموعة الموارد الخاصة بك، حدد حذف. أدخل اسم مجموعة الموارد في مربع النص لتأكيد الحذف.

  4. حدد حذف.

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

لمزيد من المعلومات، راجع المقالات التالية: