مشاركة عبر


المصادقة والتخويل في Azure App Service وAzure Functions

توفر Azure App Service إمكانات المصادقة المضمنة (تسجيل الدخول للمستخدمين) والتخويل (توفير الوصول إلى البيانات الآمنة). تسمى هذه القدرات أحيانا Easy Auth. يمكنك استخدامها لتسجيل دخول المستخدمين والوصول إلى البيانات عن طريق كتابة القليل من التعليمات البرمجية أو عدم كتابتها في تطبيق الويب وواجهة برمجة تطبيقات RESTful والخادم المحمول والوظائف.

توضح هذه المقالة كيفية مساعدة App Service في تبسيط المصادقة والتخويل لتطبيقك.

أسباب استخدام المصادقة المضمنة

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

يمكن أن توفر لك الإمكانات المضمنة في App Service وAzure Functions الوقت والجهد من خلال توفير مصادقة غير مضمنة مع موفري الهوية الموحدين، حتى تتمكن من التركيز على بقية التطبيق الخاص بك.

باستخدام App Service، يمكنك دمج قدرات المصادقة في تطبيق الويب أو واجهة برمجة التطبيقات دون تنفيذها بنفسك. تم تضمين هذه الميزة مباشرة في النظام الأساسي ولا تتطلب أي لغة أو SDK أو خبرة أمنية أو تعليمات برمجية معينة. يمكنك دمجه مع العديد من موفري تسجيل الدخول، مثل Microsoft Entra وFacebook وGoogle وX.

قد يحتاج تطبيقك إلى دعم سيناريوهات أكثر تعقيدا، مثل تكامل Visual Studio أو الموافقة المتزايدة. تتوفر العديد من حلول المصادقة لدعم هذه السيناريوهات. لمعرفة المزيد، راجع سيناريوهات المصادقة والتوصيات.

موفرو الهوية

تستخدم App Service هوية موحدة. يدير موفر هوية Microsoft أو غير التابع ل Microsoft هويات المستخدم وتدفق المصادقة نيابة عنك. يتوفر موفري الهوية التالية بشكل افتراضي:

كاسب نقطة نهاية تسجيل الدخول إرشادات إرشادية
Microsoft Entra /.auth/login/aad تسجيل الدخول إلى النظام الأساسي ل Microsoft Entra لخدمة التطبيقات
Facebook /.auth/login/facebook تسجيل الدخول إلى App Service Facebook
google /.auth/login/google تسجيل الدخول إلى Google لخدمة التطبيقات
X /.auth/login/x تسجيل الدخول إلى App Service X
GitHub /.auth/login/github تسجيل الدخول إلى App Service GitHub
تفاح /.auth/login/apple تسجيل الدخول إلى App Service عبر تسجيل الدخول إلى Apple (معاينة)
أي موفر OpenID Connect /.auth/login/<providerName> تسجيل الدخول إلى App Service OpenID Connect

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

اعتبارات استخدام المصادقة المضمنة

يؤدي تمكين المصادقة المضمنة إلى إعادة توجيه جميع الطلبات إلى التطبيق الخاص بك تلقائيا إلى HTTPS، بغض النظر عن إعداد تكوين خدمة التطبيقات لفرض HTTPS. يمكنك تعطيل إعادة التوجيه التلقائية هذه باستخدام requireHttps الإعداد في تكوين V2. ومع ذلك، نوصي بالاستمرار في استخدام HTTPS والتأكد من عدم إرسال أي رموز أمان عبر اتصالات HTTP غير الآمنة.

يمكنك استخدام App Service للمصادقة مع أو بدون تقييد الوصول إلى محتوى الموقع وواجهات برمجة التطبيقات. تعيين قيود الوصول في قسم إعدادات إعدادات>مصادقة المصادقة> في تطبيق الويب الخاص بك:

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

هام

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

كيفية عملها

هيكل الميزة

مكون البرنامج الوسيط للمصادقة والتخويل هو ميزة للنظام الأساسي الذي يعمل على نفس الجهاز الظاهري مثل التطبيق الخاص بك. عند تمكينه، يمر كل طلب HTTP وارد عبر هذا المكون قبل أن يعالجه التطبيق الخاص بك.

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

يعالج البرنامج الوسيط للنظام الأساسي العديد من الأشياء لتطبيقك:

  • مصادقة المستخدمين والعملاء مع موفري الهوية المحددين
  • التحقق من صحة وتخزين وتحديث رموز OAuth المميزة التي أصدرها موفرو الهوية المكونون
  • إدارة الجلسة المصدق عليها
  • إدخال معلومات الهوية في عناوين طلبات HTTP

تعمل الوحدة بشكل منفصل عن التعليمات البرمجية للتطبيق الخاص بك. يمكنك تكوينه باستخدام إعدادات Azure Resource Manager أو باستخدام ملف تكوين. لا يلزم وجود أدوات SDK أو لغات كمبيوتر محددة أو تغييرات في تعليمة التطبيق الخاص بك.

بنية الميزات على Windows (نشر غير حاويات)

تعمل وحدة المصادقة والتخويل كوحدة IIS أصلية في نفس بيئة الاختبار المعزولة مثل تطبيقك. عند تمكينه، يمر كل طلب HTTP وارد عبره قبل أن يعالجه التطبيق الخاص بك.

بنية الميزات على Linux والحاويات

تعمل وحدة المصادقة والتخويل في حاوية منفصلة معزولة عن التعليمات البرمجية للتطبيق الخاص بك. تستخدم الوحدة نمط السفير للتفاعل مع حركة المرور الواردة لأداء وظائف مماثلة كما هو الحال في Windows. لأنه لا يعمل في العملية، لا يمكن التكامل المباشر مع أطر عمل لغة محددة. ومع ذلك، يتم تمرير المعلومات ذات الصلة التي يحتاجها تطبيقك في رؤوس الطلبات.

تدفق المصادقة

تدفق المصادقة هو نفسه لجميع الموفرين. يختلف ذلك اعتمادا على ما إذا كنت تريد تسجيل الدخول باستخدام SDK الخاص بالموفر:

  • بدون SDK للموفر: يفوض التطبيق تسجيل الدخول الموحد إلى App Service. هذا التفويض هو الحال عادة مع تطبيقات المتصفح، والتي يمكن أن تقدم صفحة تسجيل الدخول الخاصة بالموفر للمستخدم. تدير التعليمات البرمجية للخادم عملية تسجيل الدخول، لذلك تسمى أيضا التدفق الموجه من الخادم أو تدفق الخادم.

    تنطبق هذه الحالة على تطبيقات المستعرض وتطبيقات الأجهزة المحمولة التي تستخدم مستعرضا مضمنا للمصادقة.

  • باستخدام SDK للموفر: يقوم التطبيق بتسجيل دخول المستخدمين إلى الموفر يدويا. ثم يرسل رمز المصادقة المميز إلى App Service للتحقق من الصحة. عادة ما تكون هذه العملية هي الحال مع التطبيقات بدون متصفح، والتي لا يمكنها تقديم صفحة تسجيل الدخول الخاصة بالموفر للمستخدم. تدير التعليمات البرمجية للتطبيق عملية تسجيل الدخول، لذلك تسمى أيضا التدفق الموجه من قبل العميل أو تدفق العميل.

    تنطبق هذه الحالة على واجهات برمجة تطبيقات REST وAzure Functions وعملاء متصفح JavaScript، بالإضافة إلى تطبيقات المتصفح التي تحتاج إلى مزيد من المرونة في عملية تسجيل الدخول. ينطبق أيضا على تطبيقات الأجهزة المحمولة الأصلية التي تسجل دخول المستخدمين باستخدام SDK الخاص بالموفر.

يمكن مصادقة المكالمات من تطبيق مستعرض موثوق به في App Service إلى واجهة برمجة تطبيقات REST أخرى في App Service أو Azure Functions من خلال التدفق الموجه من الخادم. لمزيد من المعلومات، راجع تخصيص تسجيل الدخول وتسجيل الخروج في مصادقة Azure App Service.

يوضح الجدول التالي خطوات تدفق المصادقة.

درج بدون SDK لموفر الخدمة مع SDK لموفر الخدمة
1. تسجيل دخول المستخدم يعيد الموفر توجيه العميل إلى /.auth/login/<provider>. يسجل رمز العميل دخول المستخدم مباشرة باستخدام SDK الخاص بالموفر ويتلقى رمز المصادقة المميز. لمزيد من المعلومات، راجع وثائق الموفر.
2. إجراء مصادقة ما بعد المصادقة يعيد الموفر توجيه العميل إلى /.auth/login/<provider>/callback. تنشر التعليمات البرمجية للعميل الرمز المميز من الموفر إلى /.auth/login/<provider> للتحقق من الصحة.
3. إنشاء جلسة عمل مصادق عليها تضيف App Service ملف تعريف ارتباط مصادق عليه إلى الاستجابة. ترجع App Service رمز المصادقة المميز الخاص بها إلى رمز العميل.
4. تقديم المحتوى المصادق عليه يتضمن العميل ملف تعريف ارتباط مصادقة في الطلبات اللاحقة (تتم معالجتها تلقائيا بواسطة المستعرض). تقدم التعليمة البرمجية للعميل رمز المصادقة المميز في X-ZUMO-AUTH العنوان.

بالنسبة لمستعرضات العملاء، يمكن لخدمة App Service توجيه جميع المستخدمين غير المصدق عليهم تلقائياً إلى /.auth/login/<provider>. يمكنك أيضا تقديم ارتباط واحد أو أكثر /.auth/login/<provider> للمستخدمين لتسجيل الدخول إلى تطبيقك باستخدام موفر الخدمة الذي يختارونه.

سلوك التخويل

في مدخل Microsoft Azure، يمكنك تكوين App Service بسلوكيات مختلفة عندما لا تتم مصادقة طلب وارد. تصف الأقسام التالية الخيارات.

هام

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

الوصول المقيد

  • السماح بالطلبات غير المصادق عليها: يؤجل هذا الخيار تخويل نسبة استخدام الشبكة غير المصادق عليها إلى التعليمات البرمجية للتطبيق الخاص بك. بالنسبة للطلبات المصادق عليها، تمرر خدمة التطبيقات أيضًا معلومات المصادقة في عناوين HTTP.

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

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

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

    تنبيه

    ينطبق تقييد الوصول بهذه الطريقة على جميع الاستدعاءات التي تُجرى على تطبيقك، والتي قد لا تكون مرغوبة بالنسبة للتطبيقات التي تريد صفحة رئيسية متاحة للجمهور، كما هو الحال في العديد من التطبيقات أحادية الصفحة. إذا كانت هناك حاجة إلى استثناءات، تحتاج إلى تكوين المسارات المستبعدة في ملف تكوين.

    ملاحظة

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

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

الطلبات غير المصادق عليها

  • HTTP 302 Found redirect: موصى به لمواقع الويب: إعادة توجيه الإجراء إلى أحد موفري الهوية المكونين. في هذه الحالات، تتم إعادة توجيه عميل المستعرض إلى /.auth/login/<provider> للموفر الذي تختاره.
  • HTTP 401 غير مصرح به: يوصى به لواجهات برمجة التطبيقات: إرجاع استجابة HTTP 401 Unauthorized إذا كان الطلب المجهول يأتي من تطبيق الأجهزة المحمولة الأصلي. يمكنك أيضا تكوين الرفض ليكون HTTP 401 Unauthorized لجميع الطلبات.
  • HTTP 403 ممنوع: تكوين الرفض ليكون HTTP 403 Forbidden لجميع الطلبات.
  • لم يتم العثور على HTTP 404: تكوين الرفض ليكون HTTP 404 Not found لجميع الطلبات.

مخزن الرمز المميز

توفر App Service مخزنا مضمنا للرمز المميز. مخزن الرمز المميز هو مستودع الرموز المميزة المقترنة بمستخدمي تطبيقات الويب أو واجهات برمجة التطبيقات أو تطبيقات الأجهزة المحمولة الأصلية. عند تمكين المصادقة مع أي موفر، يتوفر مخزن الرمز المميز هذا على الفور لتطبيقك.

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

  • النشر إلى المخطط الزمني للمستخدم المصادق عليه على Facebook.
  • اقرأ بيانات الشركة الخاصة بالمستخدم باستخدام واجهة برمجة تطبيقات Microsoft Graph.

باستخدام مخزن الرمز المميز، يمكنك فقط استرداد الرموز المميزة عندما تحتاج إليها واطلب من App Service تحديثها عندما تصبح غير صالحة.

يتم تخزين الرموز المميزة للمعرف ورمز الوصول والرموز المميزة للتحديث مؤقتا لجلسة العمل المصادق عليها. يمكن للمستخدم المقترن فقط الوصول إليها.

إذا لم تكن بحاجة إلى العمل مع الرموز المميزة في تطبيقك، يمكنك تعطيل مخزن الرمز المميز على صفحةمصادقة> الخاصة بالتطبيق.

التسجيل والتتبع.

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

إذا قمت بتمكين تتبع الطلب الفاشل، يمكنك أن ترى بالضبط الدور الذي قد تلعبه وحدة المصادقة والتخويل في طلب فاشل. في سجلات التتبع، ابحث عن مراجع لوحدة نمطية باسم EasyAuthModule_32/64.

التخفيف من تزييف الطلب عبر المواقع

تخفف مصادقة App Service من تزوير الطلب عبر المواقع عن طريق فحص طلبات العميل للشروط التالية:

  • POST إنه طلب تمت مصادقته من خلال ملف تعريف ارتباط جلسة العمل.
  • جاء الطلب من مستعرض معروف، كما هو محدد بواسطة عنوان HTTP User-Agent .
  • رأس HTTP Origin أو HTTP Referer مفقود أو غير موجود في القائمة المكونة للمجالات الخارجية المعتمدة لإعادة التوجيه.
  • رأس HTTP Origin مفقود أو غير موجود في القائمة المكونة لأصول مشاركة الموارد عبر المنشأ (CORS).

عندما يفي الطلب بجميع هذه الشروط، ترفضه مصادقة App Service تلقائيا. يمكنك حل منطق التخفيف هذا عن طريق إضافة مجالك الخارجي إلى قائمة إعادة التوجيه في إعدادات إعدادات>مصادقة>تحرير إعدادات>عناوين URL الخارجية المسموح بها لإعادة التوجيه.

اعتبارات استخدام Azure Front Door

عند استخدام Azure App Service مع المصادقة خلف Azure Front Door أو وكلاء عكسيين آخرين، ضع في اعتبارك الإجراءات التالية.

تعطيل التخزين المؤقت ل Azure Front Door

تعطيل التخزين المؤقت ل Azure Front Door لسير عمل المصادقة.

استخدام نقطة نهاية Azure Front Door لإعادة التوجيه

لا يمكن الوصول إلى App Service عادة مباشرة عندما يتم كشفها بواسطة Azure Front Door. يمكنك منع هذا السلوك، على سبيل المثال، عن طريق الكشف عن App Service باستخدام Azure Private Link في Azure Front Door Premium. لمنع سير عمل المصادقة من إعادة توجيه حركة المرور مرة أخرى إلى App Service مباشرة. لمزيد من المعلومات، راجع إعادة توجيه URI.

تأكد من أن App Service تستخدم عنوان URI الصحيح لإعادة التوجيه

في بعض التكوينات، تستخدم App Service اسم المجال المؤهل بالكامل (FQDN) ك URI لإعادة التوجيه، بدلا من Azure Front Door FQDN. يسبب هذا التكوين مشكلة عند إعادة توجيه العميل إلى App Service بدلا من Azure Front Door. لتغييره، قم بتعيين forwardProxy إلى Standard لجعل App Service تحترم X-Forwarded-Host العنوان الذي يعينه Azure Front Door.

قد يستخدم وكلاء عكسيون آخرون، مثل Azure Application Gateway أو المنتجات غير التابعة ل Microsoft، عناوين مختلفة ويحتاجون إلى إعداد مختلف forwardProxy .

لا يمكنك تغيير forwardProxy التكوين باستخدام مدخل Microsoft Azure. تحتاج إلى استخدام az rest.

إعدادات التقرير

az rest --uri /subscriptions/REPLACE-ME-SUBSCRIPTIONID/resourceGroups/REPLACE-ME-RESOURCEGROUP/providers/Microsoft.Web/sites/REPLACE-ME-APPNAME/config/authsettingsV2?api-version=2020-09-01 --method get > auth.json

تحديث الإعدادات

بحث:

"httpSettings": {
  "forwardProxy": {
    "convention": "Standard"
  }
}

convention تأكد من تعيين إلى Standard احترام X-Forwarded-Host العنوان الذي يستخدمه Azure Front Door.

إعدادات الاستيراد

az rest --uri /subscriptions/REPLACE-ME-SUBSCRIPTIONID/resourceGroups/REPLACE-ME-RESOURCEGROUP/providers/Microsoft.Web/sites/REPLACE-ME-APPNAME/config/authsettingsV2?api-version=2020-09-01 --method put --body @auth.json

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

للحصول على عينات، راجع: