المصادقة والتخويل في Azure Container Apps

توفر Azure Container Apps ميزات المصادقة والتخويل المضمنة (يشار إليها أحيانًا باسم "المصادقة السهلة")، لتأمين تطبيق الحاوية الخارجي الذي يدعم الدخول مع الحد الأدنى من التعليمات البرمجية أو بدونها.

للحصول على تفاصيل حول المصادقة والتخويل، راجع الدلائل التالية لاختيارك للموفر.

لماذا تستخدم المصادقة المضمنة؟

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

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

تشمل المزايا ما يلي:

  • توفر Azure Container Apps الوصول إلى العديد من موفري المصادقة المضمنين.
  • لا تتطلب ميزات المصادقة المضمنة أي لغة معينة أو SDK أو خبرة أمنية أو حتى أي تعليمة برمجية يجب عليك كتابتها.
  • يمكنك التكامل مع العديد من الموفرين بما في ذلك معرف Microsoft Entra وFacebook وGoogle وTwitter.

موفرو الهوية

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

الموفر نقطة نهاية تسجيل الدخول إرشادات المساعدة
النظام الأساسي للهويات في Microsoft /.auth/login/aad النظام الأساسي للهويات في Microsoft
Facebook /.auth/login/facebook Facebook
GitHub /.auth/login/github GitHub
Google /.auth/login/google Google
موقع Twitter /.auth/login/twitter موقع Twitter
أي موفر OpenID Connect /.auth/login/<providerName> OpenID Connect

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

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

يجب استخدام هذه الميزة مع HTTPS فقط. تأكد من تعطيل allowInsecure في تكوين دخول تطبيق الحاوية.

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

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

هيكل الميزة

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

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

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

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

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

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

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

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

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

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

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

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

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

سلوك التخويل

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

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

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

  • يتطلب المصادقة: سيرفض هذا الخيار أي نسبة استخدام شبكة غير مصدق عليها إلى تطبيقك. يمكن أن يكون هذا الرفض إجراء إعادة توجيه إلى أحد موفري الهوية المكونة. في هذه الحالات، يتم إعادة توجيه عميل مستعرض إلى /.auth/login/<PROVIDER> لموفر الخدمة الذي تختاره. إذا كان الطلب المجهول يأتي من تطبيق جوال أصلي، فإن الرد الذي يتم إرجاعه هوHTTP 401 Unauthorized. يمكنك أيضاً تكوين الرفض ليكون HTTP 401 Unauthorized أو HTTP 403 Forbidden لكافة الطلبات.

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

    تنبيه

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

    إشعار

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

تخصيص تسجيل الدخول وتسجيل الخروج

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

استخدام موفري تسجيل الدخول المتعددين

لا يوفر تكوين المدخل طريقة تشغيل لتقديم العديد من موفري تسجيل الدخول للمستخدمين (مثل Facebook وTwitter). ومع ذلك، ليس من الصعب إضافة الوظائف إلى تطبيقك. يتم توضيح الخطوات على النحو التالي:

أولًا، في صفحة المصادقة / التخويل في مدخل Microsoft Azure، قم بتكوين كل موفر هوية تريد تمكينه.

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

في صفحة تسجيل الدخول أو شريط التنقل أو أي موقع آخر من تطبيقك، أضف ارتباط تسجيل الدخول إلى كل موفر من الموفرين الذين قمت بتمكينهم (/.auth/login/<provider>). على سبيل المثال:

<a href="/.auth/login/aad">Log in with the Microsoft Identity Platform</a>
<a href="/.auth/login/facebook">Log in with Facebook</a>
<a href="/.auth/login/google">Log in with Google</a>
<a href="/.auth/login/twitter">Log in with Twitter</a>

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

لإعادة توجيه المستخدم بعد تسجيل الدخول إلى عنوان URL مخصص، استخدم معلمة سلسلة الاستعلام post_login_redirect_uri (لا يجب الخلط بينه وبين عنوان URI لإعادة التوجيه في تكوين موفر الهوية). على سبيل المثال، لتوجيه المستخدم إلى /Home/Index بعد تسجيل الدخول، استخدم التعليمات البرمجية HTML التالية:

<a href="/.auth/login/<provider>?post_login_redirect_uri=/Home/Index">Log in</a>

تسجيل الدخول الموجه من قبل العميل

في تسجيل الدخول الموجه من قبل العميل، يقوم التطبيق بتسجيل دخول المستخدم إلى موفر الهوية باستخدام SDK خاص بالموفر. ثم يرسل رمز التطبيق رمز المصادقة الناتج إلى Container Apps للتحقق من الصحة (راجع تدفق المصادقة) باستخدام طلب HTTP POST.

للتحقق من صحة رمز الموفر المميز، يجب أولًا تكوين تطبيق الحاوية مع الموفر المطلوب. في وقت التشغيل، بعد استرداد رمز المصادقة المميز من الموفر الخاص بك، انشر الرمز المميز إلى /.auth/login/<provider> للتحقق من الصحة. على سبيل المثال:

POST https://<hostname>.azurecontainerapps.io/.auth/login/aad HTTP/1.1
Content-Type: application/json

{"id_token":"<token>","access_token":"<token>"}

يختلف تنسيق الرمز المميز قليلًا وفقًا للموفر. راجع الجدول التالي للحصول على التفاصيل:

قيمة الموفر مطلوب في نص الطلب التعليقات
aad {"access_token":"<ACCESS_TOKEN>"} خصائص id_token وrefresh_token وexpires_in اختيارية.
microsoftaccount {"access_token":"<ACCESS_TOKEN>"} أو {"authentication_token": "<TOKEN>" authentication_token مفضل على access_token. تُعد الخاصية expires_in اختيارية.
عند طلب الرمز المميز من خدمات Live، اطلب دائمًا النطاق wl.basic.
google {"id_token":"<ID_TOKEN>"} تُعد الخاصية authorization_code اختيارية. يوفر قيمة authorization_code إضافة رمز مميز للوصول ورمز تحديث مميز إلى مخزن الرمز المميز. عند التحديد، يمكن لـauthorization_code أيضًا أن تكون مصحوبة بخاصية redirect_uri اختياريًا.
facebook {"access_token":"<USER_ACCESS_TOKEN>"} استخدم رمز وصول مستخدم صالحًا من Facebook.
twitter {"access_token":"<ACCESS_TOKEN>", "access_token_secret":"<ACCES_TOKEN_SECRET>"}

إذا تم التحقق من صحة الرمز المميز للموفر بنجاح، فترجع واجهة برمجة التطبيقات مع authenticationToken في نص الاستجابة، وهو الرمز المميز لجلسة العمل.

{
    "authenticationToken": "...",
    "user": {
        "userId": "sid:..."
    }
}

بمجرد أن يكون لديك رمز جلسة العمل هذا، يمكنك الوصول إلى موارد التطبيق المحمية عن طريق إضافة العنوان X-ZUMO-AUTH إلى طلبات HTTP. على سبيل المثال:

GET https://<hostname>.azurecontainerapps.io/api/products/1
X-ZUMO-AUTH: <authenticationToken_value>

تسجيل الخروج من جلسة عمل

يمكن للمستخدمين تسجيل الخروج عن طريق إرسال GET طلب إلى نقطة نهاية التطبيق /.auth/logout . يقوم الطلب GET بالإجراءات التالية:

  • مسح ملفات تعريف الارتباط الخاصة بالمصادقة من جلسة العمل الحالية.
  • حذف الرموز المميزة للمستخدم الحالي من مخزن الرمز المميز.
  • يقوم بتسجيل الخروج من جانب الخادم على موفر الهوية لمعرف Microsoft Entra وGoogle.

فيما يلي ارتباط بسيط لتسجيل الخروج في صفحة ويب:

<a href="/.auth/logout">Sign out</a>

بشكل افتراضي، يقوم تسجيل الخروج الناجح بإعادة توجيه العميل إلى عنوان URL /.auth/logout/done. يمكنك تغيير صفحة إعادة توجيه ما بعد تسجيل الخروج عن طريق إضافة معلمة الاستعلام post_logout_redirect_uri. على سبيل المثال:

GET /.auth/logout?post_logout_redirect_uri=/index.html

تأكد من ترميز قيمة post_logout_redirect_uri.

يجب استضافة عنوان URL في نفس المجال عند استخدام عناوين URL المؤهلة بالكامل.

قم بالوصول إلى مُطالبات المستخدم في التعليمات البرمجية الخاصة بالتطبيق

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

  • X-MS-CLIENT-PRINCIPAL-NAME
  • X-MS-CLIENT-PRINCIPAL-ID

يمكن أن تحصل التعليمات البرمجية المكتوبة بأي لغة أو إطار عمل على المعلومات التي تحتاجها من هذه العناوين.

إشعار

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

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

راجع المقالات التالية للحصول على تفاصيل حول تأمين تطبيق الحاوية.