البرنامج التعليمي: مصادقة المستخدمين وتفويضهم من طرف إلى طرف في خدمة تطبيقات Azure
توفر خدمة تطبيقات Azure خدمة استضافة ويب قابلة للتطوير بدرجة كبيرة وذاتية التصحيح. بالإضافة إلى ذلك، خدمة التطبيقات لديها دعم مضمن لمصادقة المستخدم والتفويض. يوضح هذا البرنامج التعليمي كيفية تأمين التطبيقات باستخدام مصادقة وتفويض خدمة التطبيقات. يستخدم Express.js مع الواجهة الأمامية لطرق العرض كمثال. مصادقة خدمة التطبيق ودعم تفويض جميع أوقات تشغيل اللغة، ويمكنك معرفة كيفية تطبيقه على اللغة المفضلة لديك باتباع البرنامج التعليمي.
توفر Azure App Service خدمة استضافة ويب قابلة للتطوير بدرجة كبيرة وذاتية التصحيح باستخدام نظام التشغيل Linux. بالإضافة إلى ذلك، خدمة التطبيقات لديها دعم مضمن لمصادقة المستخدم والتفويض. يوضح هذا البرنامج التعليمي كيفية تأمين التطبيقات باستخدام مصادقة وتفويض خدمة التطبيقات. ويستخدم Express.js مع طرق العرض. مصادقة خدمة التطبيق ودعم تفويض جميع أوقات تشغيل اللغة، ويمكنك معرفة كيفية تطبيقه على اللغة المفضلة لديك باتباع البرنامج التعليمي.
في البرنامج التعليمي، ستتعلم:
- تمكين المصادقة والتفويض المضمنين
- تأمين التطبيقات ضد الطلبات غير المصادقة
- استخدام معرف Microsoft Entra كموفر هوية
- الوصول إلى تطبيق بعيد نيابة عن المستخدم الذي قام بتسجيل الدخول
- مكالمات آمنة من خدمة إلى خدمة مع مصادقة الرمز المميز
- استخدام رموز الوصول المميزة من رمز الخادم
تلميح
بعد إكمال هذا السيناريو، تابع إلى الإجراء التالي لمعرفة كيفية الاتصال بخدمات Azure كمستخدم مصادق عليه. تتضمن السيناريوهات الشائعة الوصول إلى Azure Storage أو قاعدة بيانات كمستخدم لديه قدرات محددة أو الوصول إلى جداول أو ملفات معينة.
يتم توفير المصادقة في هذا الإجراء في طبقة النظام الأساسي للاستضافة بواسطة Azure App Service. يجب نشر تطبيق الواجهة الأمامية والخلفية وتكوين المصادقة لتطبيق الويب هذا لاستخدامه بنجاح.
الحصول على ملف تعريف المستخدم
تم تكوين تطبيق الواجهة الأمامية لاستخدام واجهة برمجة التطبيقات الخلفية بشكل آمن. يوفر تطبيق الواجهة الأمامية تسجيل دخول Microsoft للمستخدم، ثم يسمح للمستخدم بالحصول على ملف تعريفه المزيف من الخلفية. يستخدم هذا البرنامج التعليمي ملف تعريف مزيف لتبسيط الخطوات لإكمال السيناريو.
قبل تنفيذ التعليمات البرمجية المصدر على الواجهة الأمامية، تقوم App Service بإدخال المصادق عليه accessToken
من عنوان App Service x-ms-token-aad-access-token
. ثم تقوم التعليمات البرمجية المصدر للواجهة الأمامية بالوصول إلى accessToken وإرساله إلى الخادم الخلفي ك bearerToken
للوصول بأمان إلى واجهة برمجة التطبيقات الخلفية. يتحقق الخادم الخلفي من صحة bearerToken قبل تمريره إلى التعليمات البرمجية المصدر الخلفية. بمجرد أن تتلقى التعليمات البرمجية المصدر للواجهة الخلفية الرمز المميز للحامل، يمكن استخدامها.
في المقالة التالية في هذه السلسلة، يتم استبدال bearerToken برمز مميز مع نطاق للوصول إلى واجهة برمجة تطبيقات Microsoft Graph. تقوم واجهة برمجة تطبيقات Microsoft Graph بإرجاع معلومات ملف تعريف المستخدم.
المتطلبات الأساسية
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
1. استنساخ نموذج التطبيق
في Azure Cloud Shell، قم بتشغيل الأمر التالي لاستنساخ مستودع العينة.
git clone https://github.com/Azure-Samples/js-e2e-web-app-easy-auth-app-to-app
2. إنشاء التطبيقات ونشرها
قم بإنشاء مجموعة الموارد وخطة تطبيق الويب وتطبيق الويب ونشرها في خطوة واحدة.
قم بالتغيير إلى دليل تطبيق الويب الأمامي.
cd js-e2e-web-app-easy-auth-app-to-app/frontend
إنشاء تطبيق الويب الأمامي ونشره باستخدام az webapp لأعلى. نظرا لأن اسم تطبيق الويب يجب أن يكون فريدا عالميا، استبدل
<front-end-app-name>
باسم فريد.az webapp up --resource-group myAuthResourceGroup --name <front-end-app-name> --plan myPlan --sku FREE --os-type Windows --location "West Europe" --runtime "NODE:16LTS"
قم بالتغيير إلى دليل تطبيق الويب الخلفي.
cd ../backend
نشر تطبيق الويب الخلفي إلى نفس مجموعة الموارد وخطة التطبيق. نظرا لأن اسم تطبيق الويب يجب أن يكون فريدا عالميا، استبدل
<back-end-app-name>
بمجموعة فريدة من الأحرف الأولى أو الأرقام.az webapp up --resource-group myAuthResourceGroup --name <back-end-app-name> --plan myPlan --os-type Windows --location "West Europe" --runtime "NODE:16LTS"
قم بالتغيير إلى دليل تطبيق الويب الأمامي.
cd frontend
إنشاء تطبيق الويب الأمامي ونشره باستخدام az webapp لأعلى. نظرا لأن اسم تطبيق الويب يجب أن يكون فريدا عالميا، استبدل
<front-end-app-name>
بمجموعة فريدة من الأحرف الأولى أو الأرقام.az webapp up --resource-group myAuthResourceGroup --name <front-end-app-name> --plan myPlan --sku FREE --location "West Europe" --os-type Linux --runtime "NODE:16-lts"
قم بالتغيير إلى دليل تطبيق الويب الخلفي.
cd ../backend
نشر تطبيق الويب الخلفي إلى نفس مجموعة الموارد وخطة التطبيق. نظرا لأن اسم تطبيق الويب يجب أن يكون فريدا عالميا، استبدل
<back-end-app-name>
بمجموعة فريدة من الأحرف الأولى أو الأرقام.az webapp up --resource-group myAuthResourceGroup --name <back-end-app-name> --plan myPlan --sku FREE --location "West Europe" --runtime "NODE:16-lts"
3. تكوين إعداد التطبيق
يحتاج تطبيق الواجهة الأمامية إلى معرفة عنوان URL لتطبيق الواجهة الخلفية لطلبات واجهة برمجة التطبيقات. استخدم أمر Azure CLI التالي لتكوين إعداد التطبيق. يجب أن يكون عنوان URL بتنسيق https://<back-end-app-name>.azurewebsites.net
.
az webapp config appsettings set --resource-group myAuthResourceGroup --name <front-end-app-name> --settings BACKEND_URL="https://<back-end-app-name>.azurewebsites.net"
4. الواجهة الأمامية تستدعي الخلفية
استعرض للوصول إلى تطبيق الواجهة الأمامية وارجع ملف التعريف المزيف من الخلفية. يتحقق هذا الإجراء من أن الواجهة الأمامية تطلب بنجاح ملف التعريف من الخلفية، والواجهة الخلفية تعيد ملف التعريف.
افتح تطبيق الويب الأمامي في مستعرض،
https://<front-end-app-name>.azurewebsites.net
.حدد ارتباط
Get user's profile
.عرض ملف التعريف المزيف الذي تم إرجاعه من تطبيق الويب الخلفي.
withAuthentication
تشير قيمة false إلى أن المصادقة لم يتم إعدادها بعد.
5. تكوين المصادقة
في هذه الخطوة، يمكنك تمكين المصادقة والتخويل لتطبيقي الويب. يستخدم هذا البرنامج التعليمي معرف Microsoft Entra كموفر الهوية.
يمكنك أيضا تكوين تطبيق الواجهة الأمامية من أجل:
- منح تطبيق الواجهة الأمامية حق الوصول إلى تطبيق الواجهة الخلفية
- تكوين خدمة التطبيقات لإرجاع رمز مميز قابل للاستخدام
- استخدم الرمز المميز في التعليمات البرمجية الخاصة بك.
لمزيد من المعلومات، راجع تكوين مصادقة Microsoft Entra لتطبيق App Services.
تمكين المصادقة والتخويل لتطبيق الواجهة الخلفية
في قائمة Azure portal، حدد مجموعات الموارد ، أو ابحث عنها وحدد مجموعات الموارد من أي صفحة.
في مجموعات الموارد، ابحث عن مجموعة الموارد وحددها. في نظرة عامة، حدد تطبيق الواجهة الخلفية.
في القائمة اليسرى لتطبيق الواجهة الخلفية، حدد Authentication، ثم حدد Add identity provider.
في صفحة إضافة موفر هوية، حدد Microsoft كموفر الهوية لتسجيل الدخول إلى هويات Microsoft وMicrosoft Entra.
اقبل الإعدادات الافتراضية وحدد إضافة.
تفتح صفحة المُصادقة. انسخ معرف العميل لتطبيق Microsoft Entra إلى مفكرة. تحتاج هذه القيمة لاحقًا.
إذا توقفت هنا، لديك تطبيق مثبت ذاتيًا تم تأمينه بالفعل من خلال مصادقة خدمة التطبيقات وتفويضها. توضح لك الأقسام المتبقية كيفية تأمين حل متعدد التطبيقات عن طريق "تدفق" المستخدم المصادق عليه من الواجهة الأمامية إلى الخلفية.
تمكين المصادقة والتخويل لتطبيق الواجهة الأمامية
في قائمة Azure portal، حدد مجموعات الموارد ، أو ابحث عنها وحدد مجموعات الموارد من أي صفحة.
في مجموعات الموارد، ابحث عن مجموعة الموارد وحددها. في نظرة عامة، حدد صفحة إدارة تطبيق الواجهة الأمامية.
في القائمة اليسرى لتطبيق الواجهة الأمامية، حدد Authentication، ثم حدد Add identity provider.
في صفحة إضافة موفر هوية، حدد Microsoft كموفر الهوية لتسجيل الدخول إلى هويات Microsoft وMicrosoft Entra.
اقبل الإعدادات الافتراضية وحدد إضافة.
تفتح صفحة المُصادقة. انسخ معرف العميل لتطبيق Microsoft Entra إلى مفكرة. تحتاج هذه القيمة لاحقًا.
منح تطبيق الواجهة الأمامية حق الوصول إلى الخلفية
الآن بعد أن قمت بتمكين المصادقة والتفويض لكلا التطبيقين، يتم دعم كل منهما بواسطة تطبيق AD. لإكمال المصادقة، تحتاج إلى القيام بثلاثة أشياء:
- منح تطبيق الواجهة الأمامية حق الوصول إلى تطبيق الواجهة الخلفية
- تكوين خدمة التطبيقات لإرجاع رمز مميز قابل للاستخدام
- استخدم الرمز المميز في التعليمات البرمجية الخاصة بك.
تلميح
إذا واجهت أخطاء ثم إعادة تكوين إعدادات المصادقة/التفويض التطبيق الخاص بك، فقد لا تتم إعادة إنشاء الرموز المميزة في مخزن الرمز المميز من الإعدادات الجديدة. للتأكد من إعادة إنشاء الرموز المميزة الخاصة بك، يلزمك تسجيل الخروج وتسجيل الدخول مرة أخرى إلى تطبيقك. طريقة سهلة للقيام بذلك هي استخدام متصفحك في الوضع الخاص، وإغلاق المتصفح وإعادة فتحه في الوضع الخاص بعد تغيير الإعدادات في تطبيقاتك.
في هذه الخطوة، يمكنك منح تطبيق الواجهة الأمامية حق الوصول إلى تطبيق الواجهة الخلفية نيابة عن المستخدم. (من الناحية الفنية، يمكنك إعطاء الواجهة الأمامية تطبيق AD الأذونات للوصول إلى تطبيق AD للواجهة الخلفية نيابة عن المستخدم.)
في صفحة المصادقة لتطبيق الواجهة الأمامية، حدد اسم تطبيق الواجهة الأمامية ضمن موفر الهوية. تم إنشاء تسجيل التطبيق هذا تلقائياً لك. حدد API permissions في القائمة اليسرى.
حدد إضافة إذن، ثم حدد My APIs><back-end-app-name>.
في صفحة طلب أذونات واجهة برمجة التطبيقات لتطبيق الواجهة الخلفية، حدد الأذونات المفوضة user_impersonation، ثم حدد إضافة أذونات.
تكوين خدمة التطبيقات لإرجاع رمز مميز للوصول قابل للاستخدام
يحتوي تطبيق الواجهة الأمامية الآن على الأذونات المطلوبة للوصول إلى تطبيق الواجهة الخلفية كمستخدم قام بتسجيل الدخول. في هذه الخطوة، يمكنك تكوين مصادقة خدمة التطبيقات والتخويل لمنحك رمز وصول قابل للاستخدام للوصول إلى الخلفية. لهذه الخطوة، تحتاج إلى معرف عميل الخلفية، الذي نسخته من تمكين المصادقة والتخويل لتطبيق الواجهة الخلفية.
في Cloud Shell، قم بتشغيل الأوامر التالية على تطبيق الواجهة الأمامية لإضافة المعلمة scope
إلى إعداد identityProviders.azureActiveDirectory.login.loginParameters
المصادقة . استبدل <front-end-app-name> و <back-end-client-id>.
az extension add --name authV2
authSettings=$(az webapp auth show -g myAuthResourceGroup -n <front-end-app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.login += {"loginParameters":["scope=openid offline_access api://<back-end-client-id>/user_impersonation"]}')
az webapp auth set --resource-group myAuthResourceGroup --name <front-end-app-name> --body "$authSettings"
تضيف الأوامر بشكل فعال خاصية loginParameters
مع نطاقات مخصصة إضافية. وفيما يلي شرح للنطاق المطلوب:
openid
مطلوب من قبل App Service بشكل افتراضي بالفعل. للحصول على معلومات، راجع OpenID Connect Scopes.- offline_access مضمن هنا للراحة (في حالة رغبتك في تحديث الرموز).
api://<back-end-client-id>/user_impersonation
هي واجهة برمجة تطبيقات مكشوفة في تسجيل تطبيق الواجهة الخلفية. إنه النطاق الذي يمنحك رمز JWT المميز الذي يتضمن تطبيق الواجهة الخلفية كجمهور رمز مميز.
تلميح
- لعرض
api://<back-end-client-id>/user_impersonation
النطاق في مدخل Microsoft Azure، انتقل إلى صفحة المصادقة لتطبيق الواجهة الخلفية، وانقر فوق الارتباط ضمن موفر الهوية، ثم انقر فوق كشف واجهة برمجة تطبيقات في القائمة اليمنى. - لتكوين النطاقات المطلوبة باستخدام واجهة ويب بدلاً من ذلك، راجع خطوات Microsoft في تحديث الرموز المميزة.
- تتطلب بعض النطاقات موافقة المسؤول أو المستخدم. يؤدي هذا المطلب إلى عرض صفحة طلب الموافقة عندما يقوم المستخدم بتسجيل الدخول إلى تطبيق الواجهة الأمامية في المستعرض. لتجنب صفحة الموافقة هذه، أضف تسجيل تطبيق الواجهة الأمامية كتطبيق عميل معتمد في صفحة كشف واجهة برمجة التطبيقات بالنقر فوق إضافة تطبيق عميل وتوفير معرف العميل لتسجيل تطبيق الواجهة الأمامية.
تم تكوين تطبيقاتك الآن. الواجهة الأمامية جاهزة الآن للوصول إلى الواجهة الخلفية برمز وصول مناسب.
للحصول على معلومات حول كيفية تكوين رمز الوصول للموفرين الآخرين، راجع تحديث الرموز المميزة لموفر الهوية.
6. تكوين خدمة التطبيقات الخلفية لقبول رمز مميز فقط من خدمة التطبيقات الأمامية
يجب عليك أيضا تكوين خدمة التطبيقات الخلفية لقبول رمز مميز فقط من خدمة التطبيقات الأمامية. قد يؤدي عدم القيام بذلك إلى "403: خطأ ممنوع" عند تمرير الرمز المميز من الواجهة الأمامية إلى الخلفية.
يمكنك تعيين هذا عبر نفس عملية Azure CLI التي استخدمتها في الخطوة السابقة.
احصل على
appId
خدمة تطبيق الواجهة الأمامية (يمكنك الحصول على هذا على شفرة "المصادقة" من خدمة تطبيق الواجهة الأمامية).قم بتشغيل Azure CLI التالي، واستبدال و
<back-end-app-name>
<front-end-app-id>
.
authSettings=$(az webapp auth show -g myAuthResourceGroup -n <back-end-app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.validation.defaultAuthorizationPolicy.allowedApplications += ["<front-end-app-id>"]')
az webapp auth set --resource-group myAuthResourceGroup --name <back-end-app-name> --body "$authSettings"
authSettings=$(az webapp auth show -g myAuthResourceGroup -n <back-end-app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.validation.jwtClaimChecks += { "allowedClientApplications": ["<front-end-app-id>"]}')
az webapp auth set --resource-group myAuthResourceGroup --name <back-end-app-name> --body "$authSettings"
7. الواجهة الأمامية تستدعي الخلفية المصادق عليها
يحتاج تطبيق الواجهة الأمامية إلى تمرير مصادقة المستخدم مع النطاق الصحيح user_impersonation
إلى الواجهة الخلفية. تستعرض الخطوات التالية التعليمات البرمجية المتوفرة في العينة لهذه الوظيفة.
عرض التعليمات البرمجية المصدر لتطبيق الواجهة الأمامية:
استخدم العنوان الذي تم إدخاله
x-ms-token-aad-access-token
في خدمة التطبيقات الأمامية للحصول على الرمز المميز للوصول للمستخدم برمجيا.// ./src/server.js const accessToken = req.headers['x-ms-token-aad-access-token'];
استخدم accessToken في
Authentication
العنوان كقيمةbearerToken
.// ./src/remoteProfile.js // Get profile from backend const response = await fetch(remoteUrl, { cache: "no-store", // no caching -- for demo purposes only method: 'GET', headers: { 'Authorization': `Bearer ${accessToken}` } }); if (response.ok) { const { profile } = await response.json(); console.log(`profile: ${profile}`); } else { // error handling }
يقوم هذا البرنامج التعليمي بإرجاع ملف تعريف مزيف لتبسيط السيناريو. يوضح البرنامج التعليمي التالي في هذه السلسلة كيفية استبدال bearerToken الخلفي برمز مميز جديد مع نطاق خدمة Azure المتلقية للمعلومات، مثل Microsoft Graph.
7. ترجع الواجهة الخلفية ملف التعريف إلى الواجهة الأمامية
إذا لم يكن الطلب من الواجهة الأمامية مخولا، ترفض خدمة تطبيق الواجهة الخلفية الطلب برمز خطأ HTTP 401 قبل أن يصل الطلب إلى رمز التطبيق الخاص بك. عند الوصول إلى التعليمات البرمجية الخلفية (لأنها تتضمن رمزا مميزا معتمدا)، قم باستخراج bearerToken للحصول على accessToken.
عرض التعليمات البرمجية المصدر لتطبيق الواجهة الخلفية:
// ./src/server.js
const bearerToken = req.headers['Authorization'] || req.headers['authorization'];
if (bearerToken) {
const accessToken = bearerToken.split(' ')[1];
console.log(`backend server.js accessToken: ${!!accessToken ? 'found' : 'not found'}`);
// TODO: get profile from Graph API
// provided in next article in this series
// return await getProfileFromMicrosoftGraph(accessToken)
// return fake profile for this tutorial
return {
"displayName": "John Doe",
"withAuthentication": !!accessToken ? true : false
}
}
8. استعرض للوصول إلى التطبيقات
استخدم موقع ويب للواجهة الأمامية في مستعرض. عنوان URL بتنسيق
https://<front-end-app-name>.azurewebsites.net/
.يطلب المستعرض المصادقة الخاصة بك إلى تطبيق الويب. أكمل المصادقة.
بعد اكتمال المصادقة، يقوم تطبيق الواجهة الأمامية بإرجاع الصفحة الرئيسية للتطبيق.
حدد
Get user's profile
. يؤدي ذلك إلى تمرير المصادقة الخاصة بك في الرمز المميز للحامل إلى الخلفية.تستجيب النهاية الخلفية باسم ملف التعريف المزيف ذو التعليمات البرمجية المضمنة:
John Doe
.withAuthentication
تشير قيمة true إلى إعداد المصادقة حتى الآن.
9. حذف الموارد
في الخطوات السابقة، أنشأت موارد Azure في إحدى مجموعات الموارد.
احذف مجموعة الموارد عن طريق تشغيل الأمر التالي في Cloud Shell. ربما يستغرق الأمر بضع دقائق للتشغيل.
az group delete --name myAuthResourceGroup
استخدم معرف العميل لتطبيقات المصادقة، الذي عثرت عليه مسبقا وقمت بتدوينه في
Enable authentication and authorization
أقسام تطبيقات الواجهة الخلفية والواجهة الأمامية.احذف تسجيلات التطبيقات لكل من تطبيقات الواجهة الأمامية والخلفية.
# delete app - do this for both frontend and backend client ids az ad app delete <client-id>
الأسئلة الشائعة
كيف أعمل اختبار هذه المصادقة على جهاز التطوير المحلي الخاص بي؟
يتم توفير المصادقة في هذا الإجراء في طبقة النظام الأساسي للاستضافة بواسطة Azure App Service. لا يوجد محاكي مكافئ. يجب نشر تطبيق الواجهة الأمامية والخلفية ومصادقة التكوين لكل منهما لاستخدام المصادقة.
لا يعرض التطبيق ملف تعريف مزيف ، كيف يمكنني تصحيحه؟
لكل /debug
من تطبيقي الواجهة الأمامية والخلفية مسارات للمساعدة في تصحيح أخطاء المصادقة عندما لا يرجع هذا التطبيق ملف التعريف المزيف . يوفر مسار تتبع أخطاء الواجهة الأمامية الأجزاء الهامة للتحقق من صحتها:
- متغيرات البيئة:
BACKEND_URL
تم تكوين بشكل صحيح كhttps://<back-end-app-name>.azurewebsites.net
. لا تقم بتضمين الشرطة المائلة اللاحقة للأمام أو المسار.
- رؤوس HTTP:
x-ms-token-*
يتم حقن الرؤوس.
- يتم عرض اسم ملف تعريف Microsoft Graph للمستخدم الذي قام بتسجيل الدخول.
- يحتوي
user_impersonation
نطاق تطبيق الواجهة الأمامية للرمز المميز على . إذا لم يتضمن نطاقك هذا، فقد تكون مشكلة في التوقيت. تحقق من معلمات تطبيقlogin
الواجهة الأمامية في موارد Azure. انتظر بضع دقائق للنسخ المتماثل للمصادقة.
هل تم نشر التعليمات البرمجية المصدر للتطبيق بشكل صحيح لكل تطبيق ويب؟
في مدخل Microsoft Azure لتطبيق الويب، حدد Development Tools -> Advanced Tools، ثم حدد Go ->. يؤدي ذلك إلى فتح علامة تبويب أو نافذة مستعرض جديدة.
في علامة تبويب المستعرض الجديد، حدد Browse Directory -> Site wwwroot.
تحقق مما يلي في الدليل:
- package.json
- node_modules.tar.gz
- /src/index.js
تحقق من أن خاصية package.json
name
هي نفس اسم الويب، إماfrontend
أوbackend
.إذا قمت بتغيير التعليمات البرمجية المصدر، وتحتاج إلى إعادة النشر، فاستخدم az webapp لأعلى من الدليل الذي يحتوي على ملف package.json لهذا التطبيق.
هل بدأ التطبيق بشكل صحيح
يجب أن يرجع كلا تطبيقي الويب شيئا عند طلب الصفحة الرئيسية. إذا تعذر عليك الوصول إلى /debug
تطبيق ويب، فلن يبدأ التطبيق بشكل صحيح. راجع سجلات الخطأ لتطبيق الويب هذا.
- في مدخل Microsoft Azure لتطبيق الويب، حدد Development Tools -> Advanced Tools، ثم حدد Go ->. يؤدي ذلك إلى فتح علامة تبويب أو نافذة مستعرض جديدة.
- في علامة تبويب المستعرض الجديد، حدد Browse Directory -> Deployment Logs.
- راجع كل سجل للعثور على أي مشكلات تم الإبلاغ عنها.
هل يمكن لتطبيق الواجهة الأمامية التحدث إلى تطبيق الواجهة الخلفية؟
نظرا لأن تطبيق الواجهة الأمامية يستدعي تطبيق الواجهة الخلفية من التعليمات البرمجية المصدر للخادم، فهذا ليس شيئا يمكنك رؤيته في حركة مرور شبكة المتصفح. استخدم القائمة التالية لتحديد نجاح طلب ملف تعريف الخلفية:
- يقوم تطبيق الويب الخلفي بإرجاع أي أخطاء إلى تطبيق الواجهة الأمامية إذا تم الوصول إليه. إذا لم يتم الوصول إليه، يقوم تطبيق الواجهة الأمامية بالإبلاغ عن رمز الحالة والرسالة.
- 401: لم يمرر المستخدم المصادقة بشكل صحيح. يمكن أن يشير هذا إلى عدم تعيين النطاق بشكل صحيح.
- 404: عنوان URL للخادم لا يتطابق مع المسار الذي يحتوي عليه الخادم
- استخدم سجلات دفق تطبيق الواجهة الخلفية لمشاهدة أثناء تقديم طلب الواجهة الأمامية لملف تعريف المستخدم. هناك معلومات تتبع الأخطاء في التعليمات البرمجية
console.log
المصدر التي تساعد في تحديد مكان حدوث الفشل.
ماذا يحدث عند انتهاء صلاحية الرمز المميز للواجهة الأمامية؟
تنتهي صلاحية رمز الوصول الخاص بك بعد مرور بعض الوقت. للحصول على معلومات حول كيفية تحديث رموز الوصول الخاصة بك دون مطالبة المستخدمين بإعادة المصادقة مع التطبيق الخاص بك، راجع تحديث الرموز المميزة لموفر الهوية.
إذا كان لدي تطبيق يستند إلى المستعرض على تطبيق الواجهة الأمامية، هل يمكنه التحدث إلى الواجهة الخلفية مباشرة؟
يتطلب هذا الأسلوب رمز الخادم لتمرير الرمز المميز للوصول إلى رمز JavaScript الذي يعمل في متصفح العميل. نظرا لعدم وجود طريقة لحماية الرمز المميز للوصول في المتصفح، فإنه ليس نهجا موصى به. حاليا، يوصى بنمط الواجهة الخلفية للواجهة الأمامية. إذا تم تطبيقه على المثال في هذا البرنامج التعليمي، فإن التعليمات البرمجية للمستعرض على تطبيق الواجهة الأمامية ستقوم بإجراء استدعاءات واجهة برمجة التطبيقات في جلسة مصادق عليها إلى رمز الخادم الخاص بها كوسيط، وستجعل التعليمة البرمجية للخادم على تطبيق الواجهة الأمامية بدورها استدعاءات واجهة برمجة التطبيقات إلى التطبيق الخلفي باستخدام x-ms-token-aad-access-token
قيمة العنوان كرمز حامل. ستكون جميع المكالمات من التعليمات البرمجية للمستعرض إلى رمز الخادم محمية من خلال جلسة العمل المصادق عليها بالفعل.
الخطوات التالية
ما تعلمته:
- تمكين المصادقة والتفويض المضمنين
- تأمين التطبيقات ضد الطلبات غير المصادقة
- استخدام معرف Microsoft Entra كموفر هوية
- الوصول إلى تطبيق بعيد نيابة عن المستخدم الذي قام بتسجيل الدخول
- مكالمات آمنة من خدمة إلى خدمة مع مصادقة الرمز المميز
- استخدام رموز الوصول المميزة من رمز الخادم
تقدم إلى البرنامج التعليمي التالي لمعرفة كيفية استخدام هوية هذا المستخدم للوصول إلى خدمة Azure.