التشغيل السريع: تكوين تسجيل الدخول الأحادي للتطبيقات باستخدام خطة Azure Spring Apps Enterprise

إشعار

يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.

تنطبق هذه المقالة على:❌ Basic/Standard ✔️ Enterprise

يوضح لك هذا التشغيل السريع كيفية تكوين تسجيل الدخول الأحادي للتطبيقات التي تعمل على خطة Azure Spring Apps Enterprise.

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

إعداد بيانات اعتماد تسجيل الدخول الأحادي

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

استخدام موفر موجود

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

  1. قم بتكوين موفر الهوية الحالي للسماح بإعادة التوجيه مرة أخرى إلى Spring Cloud Gateway ل VMware Tanzu ومدخل API ل VMware Tanzu. تحتوي Spring Cloud Gateway على URI واحد للسماح بإعادة الدخول إلى البوابة. يحتوي مدخل واجهة برمجة التطبيقات على معرفي URI لدعم واجهة المستخدم وواجهة برمجة التطبيقات الأساسية. تقوم الأوامر التالية باسترداد معرفات URI هذه التي تضيفها إلى تكوين موفر تسجيل الدخول الأحادي.

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    export PORTAL_URL=$(az spring api-portal show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    echo "https://${GATEWAY_URL}/login/oauth2/code/sso"
    echo "https://${PORTAL_URL}/oauth2-redirect.html"
    echo "https://${PORTAL_URL}/login/oauth2/code/sso"
    
  2. احصل على Client ID و Client Secret لموفر الهوية الخاص بك.

  3. احصل على Issuer URI لموفر الهوية الخاص بك. يجب تكوين الموفر باستخدام URI المصدر، وهو URI الذي يؤكده كمعرف المصدر الخاص به. على سبيل المثال، إذا كان issuer-uri المقدم هو https://example.com، فسيتم إجراء طلب تكوين موفر OpenID إلى https://example.com/.well-known/openid-configuration. ومن المتوقع أن تكون النتيجة استجابة تكوين موفّر OpenID.

    إشعار

    يمكنك فقط استخدام خوادم التخويل التي تدعم بروتوكول OpenID الاتصال Discovery.

  4. احصل على JWK URI لموفر الهوية لاستخدامه لاحقا. JWK URI عادة ما يأخذ النموذج ${ISSUER_URI}/keys أو ${ISSUER_URI}/<version>/keys. يستخدم تطبيق خدمة الهوية مفاتيح ويب JSON العامة (JWK) للتحقق من رموز ويب JSON المميزة (JWT) الصادرة عن خادم تخويل موفر هوية تسجيل الدخول الأحادي.

إنشاء وتكوين تسجيل تطبيق باستخدام معرف Microsoft Entra

لتسجيل التطبيق باستخدام معرف Microsoft Entra، اتبع الخطوات التالية. إذا كنت تستخدم بيانات اعتماد موفر موجود، فانتقل إلى القسم التالي، نشر تطبيق خدمة الهوية.

  1. استخدم الأمر التالي لإنشاء تسجيل تطبيق باستخدام معرف Microsoft Entra وحفظ الإخراج:

    az ad app create --display-name <app-registration-name> > ad.json
    
  2. استخدم الأمر التالي لاسترداد معرف التطبيق وجمع سر العميل:

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    az ad app credential reset --id ${APPLICATION_ID} --append > sso.json
    
  3. استخدم الأمر التالي لتعيين كيان الخدمة لتسجيل التطبيق:

    az ad sp create --id ${APPLICATION_ID}
    
  4. استخدم الأوامر التالية لاسترداد عناوين URL ل Spring Cloud Gateway ومدخل API، وإضافة عناوين URL للرد الضرورية إلى تسجيل تطبيق Active Directory.

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    
    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    export PORTAL_URL=$(az spring api-portal show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    az ad app update \
        --id ${APPLICATION_ID} \
        --web-redirect-uris "https://${GATEWAY_URL}/login/oauth2/code/sso" "https://${PORTAL_URL}/oauth2-redirect.html" "https://${PORTAL_URL}/login/oauth2/code/sso"
    
  5. استخدم الأمر التالي لاسترداد التطبيق Client ID. احفظ الإخراج لاستخدامه لاحقا في هذا التشغيل السريع.

    cat sso.json | jq -r '.appId'
    
  6. استخدم الأمر التالي لاسترداد التطبيق Client Secret. احفظ الإخراج لاستخدامه لاحقا في هذا التشغيل السريع.

    cat sso.json | jq -r '.password'
    
  7. استخدم الأمر التالي لاسترداد Issuer URI. احفظ الإخراج لاستخدامه لاحقا في هذا التشغيل السريع.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/v2.0"
    
  8. JWK URI استرداد من إخراج الأمر التالي. يستخدم تطبيق خدمة الهوية مفاتيح ويب JSON العامة (JWK) للتحقق من رموز ويب JSON المميزة (JWT) الصادرة عن Active Directory.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/discovery/v2.0/keys"
    

نشر تطبيق خدمة الهوية

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

  1. انتقل إلى مجلد المشروع.

  2. استخدم الأمر التالي لإنشاء identity-service التطبيق:

    az spring app create \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  3. استخدم الأمر التالي لتمكين التكوين الخارجي لخدمة الهوية عن طريق الربط بخدمة تكوين التطبيق:

    az spring application-configuration-service bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  4. استخدم الأمر التالي لتمكين اكتشاف الخدمة وتسجيلها لخدمة الهوية عن طريق الربط بسجل الخدمة:

    az spring service-registry bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  5. استخدم الأمر التالي لنشر خدمة الهوية:

    az spring app deploy \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --config-file-pattern identity/default \
        --source-path apps/acme-identity \
        --build-env BP_JVM_VERSION=17 \
        --env "JWK_URI=<jwk-uri>"
    
  6. استخدم الأمر التالي لتوجيه الطلبات إلى خدمة الهوية:

    az spring gateway route-config create \
        --resource-group <resource-group-name> \
        --name identity-routes \
        --service <Azure-Spring-Apps-service-instance-name> \
        --app-name identity-service \
        --routes-file azure-spring-apps-enterprise/resources/json/routes/identity-service.json
    

تكوين تسجيل الدخول الأحادي ل Spring Cloud Gateway

يمكنك تكوين Spring Cloud Gateway لمصادقة الطلبات باستخدام تسجيل الدخول الأحادي. لتكوين Spring Cloud Gateway لاستخدام تسجيل الدخول الأحادي، اتبع الخطوات التالية:

  1. استخدم الأوامر التالية لتكوين Spring Cloud Gateway لاستخدام تسجيل الدخول الأحادي:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    az spring gateway update \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> \
        --api-description "Fitness Store API" \
        --api-title "Fitness Store" \
        --api-version "v1.0" \
        --server-url "https://${GATEWAY_URL}" \
        --allowed-origins "*" \
        --client-id <client-id> \
        --client-secret <client-secret> \
        --scope "openid,profile" \
        --issuer-uri <issuer-uri>
    
  2. توجيه تطبيق خدمة عربة التسوق لاستخدام Spring Cloud Gateway للمصادقة. استخدم الأمر التالي لتوفير متغيرات البيئة الضرورية:

    az spring app update \
        --resource-group <resource-group-name> \
        --name cart-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --env "AUTH_URL=https://${GATEWAY_URL}" "CART_PORT=8080"
    
  3. توجيه تطبيق خدمة الطلب لاستخدام Spring Cloud Gateway للمصادقة. استخدم الأمر التالي لتوفير متغيرات البيئة الضرورية:

    az spring app update \
        --resource-group <resource-group-name> \
        --name order-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --env "AcmeServiceSettings__AuthUrl=https://${GATEWAY_URL}"
    
  4. استخدم الأمر التالي لاسترداد عنوان URL ل Spring Cloud Gateway:

    echo "https://${GATEWAY_URL}"
    

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

تكوين تسجيل الدخول الأحادي لمدخل API

يمكنك تكوين مدخل API ل VMware Tanzu لاستخدام تسجيل الدخول الأحادي لطلب المصادقة قبل استكشاف واجهات برمجة التطبيقات. استخدم الأوامر التالية لتكوين تسجيل الدخول الأحادي لمدخل API:

export PORTAL_URL=$(az spring api-portal show \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')

az spring api-portal update \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --client-id <client-id> \
    --client-secret <client-secret> \
    --scope "openid,profile,email" \
    --issuer-uri <issuer-uri>

استخدم الأوامر التالية لاسترداد عنوان URL لمدخل API:

export PORTAL_URL=$(az spring api-portal show \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')

echo "https://${PORTAL_URL}"

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


تنظيف الموارد

إذا كنت تخطط لمواصلة العمل بالبدايات السريعة والبرامج التعليمية اللاحقة، فقد ترغب في ترك هذه الموارد في مكانها. يمكنك حذف مجموعة الموارد عند انتهاء حاجتك إليها، وهذا يؤدي إلى حذف الموارد الموجودة في مجموعة الموارد. لحذف مجموعة الموارد باستخدام Azure CLI، استخدم الأوامر التالية:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

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

تابع إلى أي من قوالب التشغيل السريع الاختيارية التالية: