العمل مع خادم الواجهة الخلفية .NET SDK لتطبيقات Azure Mobile

يوضح لك هذا الموضوع كيفية استخدام خادم الواجهة الخلفية .NET SDK في سيناريوهات Azure App Service Mobile Apps الرئيسية. يساعدك Azure Mobile Apps SDK على العمل مع عملاء الأجهزة المحمولة من تطبيق ASP.NET الخاص بك.

تلميح

يتم مصدر مفتوح SDK لخادم .NET لتطبيقات Azure Mobile على GitHub. يحتوي المستودع على جميع التعليمات البرمجية المصدر بما في ذلك مجموعة اختبار وحدة SDK للخادم بالكامل وبعض نماذج المشاريع.

الوثائق المرجعية

توجد الوثائق المرجعية ل SDK الخادم هنا: Azure Mobile Apps .NET Reference.

كيفية: إنشاء خلفية تطبيق .NET Mobile

إذا كنت تقوم ببدء مشروع جديد، يمكنك إنشاء تطبيق App Service باستخدام إما مدخل Microsoft Azure أو Visual Studio. يمكنك تشغيل تطبيق App Service محليا أو نشر المشروع على تطبيق App Service للأجهزة المحمولة المستند إلى السحابة.

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

إنشاء خلفية .NET باستخدام مدخل Microsoft Azure

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

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

  2. حدد +NEW>Web + Mobile>Mobile App، ثم أدخل اسما لواجهة تطبيقات الجوال الخلفية.

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

  4. بالنسبة لخطة App Service، يتم تحديد الخطة الافتراضية (في المستوى القياسي). يمكنك أيضا تحديد خطة مختلفة، أو إنشاء خطة جديدة.

    تحدد إعدادات خطة App Service الموقع والميزات والتكلفة وموارد الحوسبة المقترنة بتطبيقك. لمزيد من المعلومات حول خطط App Service وكيفية إنشاء خطة جديدة في مستوى تسعير مختلف وفي الموقع المطلوب، راجع نظرة عامة متعمقة على خطط Azure App Service.

  5. حدد Create. تنشئ هذه الخطوة النهاية الخلفية لتطبيقات الأجهزة المحمولة.

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

    تحديدات لتوصيل قاعدة بيانات

  7. في جزء Add data connection ، حدد SQL Database>Create a new database. أدخل اسم قاعدة البيانات، واختر مستوى التسعير، ثم حدد الخادم. يمكنك إعادة استخدام قاعدة البيانات الجديدة هذه. إذا كان لديك بالفعل قاعدة بيانات في نفس الموقع، يمكنك بدلا من ذلك اختيار استخدام قاعدة بيانات موجودة. لا نوصي باستخدام قاعدة بيانات في موقع مختلف، بسبب تكاليف النطاق الترددي وزمن انتقال أعلى.

    تحديد قاعدة بيانات

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

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

    انتظر بضع دقائق حتى يتم نشر قاعدة البيانات بنجاح قبل المتابعة.

مرة أخرى في الجزء بدء الاستخدام ، ضمن إنشاء واجهة برمجة تطبيقات جدول، اختر C#‎كلغة خلفية. انقر فوق تنزيل واستخراج ملفات المشروع المضغوطة إلى الكمبيوتر المحلي، وافتح الحل في Visual Studio.

إنشاء خلفية .NET باستخدام Visual Studio 2017

قم بتثبيت حمل عمل Azure عبر Visual Studio Installer للنشر إلى مشروع Azure Mobile Apps من Visual Studio. بمجرد تثبيت SDK، قم بإنشاء تطبيق ASP.NET باستخدام الخطوات التالية:

  1. افتح مربع الحوار مشروع جديد (من ملف>مشروع جديد>...).
  2. قم بتوسيع Visual C#‎ وحدد Web.
  3. اختر تطبيق ويب ASP.NET (إطار .NET) .
  4. املأ اسم المشروع. ثم انقر على موافق.
  5. حدد Azure Mobile App من قائمة القوالب.
  6. انقر فوق موافق لإنشاء الحل.
  7. انقر بزر الماوس الأيمن فوق المشروع في مستكشف الحلولواختر Publish...، ثم اختر App Service كهدف للنشر.
  8. اتبع المطالبات للمصادقة واختر خدمة تطبيقات Azure جديدة أو موجودة للنشر.

إنشاء خلفية .NET باستخدام Visual Studio 2015

قم بتثبيت Azure SDK ل .NET (الإصدار 2.9.0 أو أحدث) لإنشاء مشروع Azure Mobile Apps في Visual Studio. بمجرد تثبيت SDK، قم بإنشاء تطبيق ASP.NET باستخدام الخطوات التالية:

  1. افتح مربع الحوار مشروع جديد (من ملف>مشروع جديد>...).
  2. قم بتوسيع Templates>Visual C#‎، وحدد Web.
  3. حدد ASP.NET Web Application.
  4. املأ اسم المشروع. ثم انقر على موافق.
  5. ضمن ASP.NET 4.5.2 Templates، حدد Azure Mobile App. تحقق من المضيف في السحابة لإنشاء خلفية للأجهزة المحمولة في السحابة التي يمكنك نشر هذا المشروع إليها.
  6. انقر فوق موافق.

كيفية: تنزيل SDK وتهيئته

تتوفر SDK على NuGet.org. تتضمن هذه الحزمة الوظيفة الأساسية المطلوبة للبدء باستخدام SDK. لتهيئة SDK، تحتاج إلى تنفيذ إجراءات على كائن HttpConfiguration .

تثبيت SDK

لتثبيت SDK، انقر بزر الماوس الأيمن فوق مشروع الخادم في Visual Studio، وحدد إدارة حزم NuGet، وابحث عن حزمة Microsoft.Azure.Mobile.Server ، ثم انقر فوق تثبيت.

تهيئة مشروع الخادم

تتم تهيئة مشروع خادم الخلفية .NET مشابه لمشاريع ASP.NET الأخرى، من خلال تضمين فئة بدء تشغيل OWIN. تأكد من أنك قمت بالإشارة إلى حزمة Microsoft.Owin.Host.SystemWebNuGet . لإضافة هذه الفئة في Visual Studio، انقر بزر الماوس الأيمن فوق مشروع الخادم وحدد إضافة>عنصر جديد، ثمفئة بدء تشغيل Web>General> OWIN. يتم إنشاء فئة بالسمة التالية:

[assembly: OwinStartup(typeof(YourServiceName.YourStartupClassName))]

في Configuration() أسلوب فئة بدء تشغيل OWIN، استخدم كائن HttpConfiguration لتكوين بيئة Azure Mobile Apps. يقوم المثال التالي بتهيئة مشروع الخادم بدون ميزات إضافية:

// in OWIN startup class
public void Configuration(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    new MobileAppConfiguration()
        // no added features
        .ApplyTo(config);

    app.UseWebApi(config);
}

لتمكين الميزات الفردية، يجب استدعاء أساليب الملحق على كائن MobileAppConfiguration قبل استدعاء ApplyTo. على سبيل المثال، تضيف التعليمات البرمجية التالية المسارات الافتراضية إلى جميع وحدات تحكم واجهة برمجة التطبيقات التي لها السمة [MobileAppController] أثناء التهيئة:

new MobileAppConfiguration()
    .MapApiControllers()
    .ApplyTo(config);

يستدعي التشغيل السريع للخادم من مدخل Microsoft Azure UseDefaultConfiguration(). هذا مكافئ للإعداد التالي:

    new MobileAppConfiguration()
        .AddMobileAppHomeController()             // from the Home package
        .MapApiControllers()
        .AddTables(                               // from the Tables package
            new MobileAppTableConfiguration()
                .MapTableControllers()
                .AddEntityFramework()             // from the Entity package
            )
        .AddPushNotifications()                   // from the Notifications package
        .MapLegacyCrossDomainController()         // from the CrossDomain package
        .ApplyTo(config);

أساليب الملحق المستخدمة هي:

  • AddMobileAppHomeController() يوفر الصفحة الرئيسية الافتراضية لتطبيقات Azure Mobile Apps.
  • MapApiControllers() يوفر إمكانات واجهة برمجة تطبيقات مخصصة لوحدات تحكم WebAPI مزينة بالسمة [MobileAppController] .
  • AddTables() يوفر تعيين /tables نقاط النهاية إلى وحدات تحكم الجدول.
  • AddTablesWithEntityFramework() هو اختصار لتعيين /tables نقاط النهاية باستخدام وحدات التحكم المستندة إلى إطار الكيان.
  • AddPushNotifications() يوفر طريقة بسيطة لتسجيل الأجهزة لمراكز الإعلامات.
  • MapLegacyCrossDomainController() يوفر عناوين CORS القياسية للتطوير المحلي.

ملحقات SDK

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

  • يدعم Microsoft.Azure.Mobile.Server.Quickstart إعداد تطبيقات الأجهزة المحمولة الأساسية. تمت الإضافة إلى التكوين عن طريق استدعاء أسلوب ملحق UseDefaultConfiguration أثناء التهيئة. يتضمن هذا الملحق الملحقات التالية: الإشعارات والمصادقة والكيان والجداول والحزم عبر المجالات والحزم الرئيسية. يتم استخدام هذه الحزمة بواسطة التشغيل السريع لتطبيقات الأجهزة المحمولة المتوفرة على مدخل Microsoft Azure.
  • يقوم Microsoft.Azure.Mobile.Server.Home بتنفيذ الصفحة الافتراضية لتطبيق الأجهزة المحمولة هذا وتشغيلها لجذر موقع الويب. أضف إلى التكوين عن طريق استدعاء أسلوب ملحق AddMobileAppHomeController .
  • يتضمن Microsoft.Azure.Mobile.Server.Tables فئات للعمل مع البيانات وإعداد البنية الأساسية لبرنامج ربط العمليات التجارية للبيانات. أضف إلى التكوين عن طريق استدعاء أسلوب ملحق AddTables .
  • يمكن Microsoft.Azure.Mobile.Server.Entity إطار عمل الكيان من الوصول إلى البيانات في قاعدة بيانات SQL. أضف إلى التكوين عن طريق استدعاء أسلوب ملحق AddTablesWithEntityFramework .
  • Microsoft.Azure.Mobile.Server.Authentication تمكن المصادقة وإعداد البرنامج الوسيط OWIN المستخدم للتحقق من صحة الرموز المميزة. أضف إلى التكوين عن طريق استدعاء AddAppServiceAuthenticationوIAppBuilder. استخدام أساليب ملحقAppServiceAuthentication .
  • Microsoft.Azure.Mobile.Server.Notifications تمكن الإعلامات المؤقتة وتحدد نقطة نهاية تسجيل الدفع. أضف إلى التكوين عن طريق استدعاء أسلوب ملحق AddPushNotifications .
  • ينشئ Microsoft.Azure.Mobile.Server.CrossDomain وحدة تحكم تقدم البيانات إلى مستعرضات الويب القديمة من تطبيق الأجهزة المحمولة. أضف إلى التكوين عن طريق استدعاء أسلوب ملحق MapLegacyCrossDomainController .
  • يوفر Microsoft.Azure.Mobile.Server.Login أسلوب AppServiceLoginHandler.CreateToken() ، وهو أسلوب ثابت يستخدم أثناء سيناريوهات المصادقة المخصصة.

كيفية: نشر مشروع الخادم

يوضح لك هذا القسم كيفية نشر مشروع الواجهة الخلفية .NET من Visual Studio. يمكنك أيضا نشر مشروع الواجهة الخلفية باستخدام Git أو أي من الطرق الأخرى المتاحة هناك.

  1. في Visual Studio، أعد إنشاء المشروع لاستعادة حزم NuGet.

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

  3. إذا طلب منك تحديد هدف نشر، فانقر فوق Microsoft Azure App Service>Next، ثم (إذا لزم الأمر) تسجيل الدخول باستخدام بيانات اعتماد Azure. يقوم Visual Studio بتنزيل إعدادات النشر وتخزينها بأمان مباشرة من Azure.

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

  5. تحقق من معلومات ملف تعريف النشر وانقر فوق نشر.

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

كيفية: تعريف وحدة تحكم جدول

تعريف وحدة تحكم جدول لعرض جدول SQL لعملاء الأجهزة المحمولة. يتطلب تكوين وحدة تحكم الجدول ثلاث خطوات:

  1. إنشاء فئة كائن نقل البيانات (DTO).
  2. تكوين مرجع جدول في فئة Mobile DbContext.
  3. إنشاء وحدة تحكم جدول.

كائن نقل البيانات (DTO) هو كائن C# عادي يرث من EntityData. على سبيل المثال:

public class TodoItem : EntityData
{
    public string Text { get; set; }
    public bool Complete {get; set;}
}

يتم استخدام DTO لتعريف الجدول داخل قاعدة بيانات SQL. لإنشاء إدخال قاعدة البيانات، أضف خاصية DbSet<> إلى DbContext الذي تستخدمه. في قالب المشروع الافتراضي لتطبيقات Azure Mobile، يسمى Models\MobileServiceContext.csDbContext :

public class MobileServiceContext : DbContext
{
    private const string connectionStringName = "Name=MS_TableConnectionString";

    public MobileServiceContext() : base(connectionStringName)
    {

    }

    public DbSet<TodoItem> TodoItems { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Add(
            new AttributeToColumnAnnotationConvention<TableColumnAttribute, string>(
                "ServiceColumnTable", (property, attributes) => attributes.Single().ColumnType.ToString()));
    }
}

إذا كان لديك Azure SDK مثبتا، يمكنك الآن إنشاء وحدة تحكم جدول قالب كما يلي:

  1. انقر بزر الماوس الأيمن فوق مجلد Controllers وحدد Add>Controller....
  2. حدد خيار Azure Mobile Apps Table Controller ، ثم انقر فوق Add.
  3. في مربع الحوار إضافة وحدة تحكم :
    • في القائمة المنسدلة فئة النموذج ، حدد DTO الجديد.
    • في القائمة المنسدلة DbContext ، حدد فئة Mobile Service DbContext.
    • يتم إنشاء اسم وحدة التحكم لك.
  4. انقر فوق Add.

يحتوي مشروع خادم التشغيل السريع على مثال ل TodoItemController بسيط.

كيفية: ضبط حجم ترحيل الجدول

بشكل افتراضي، تقوم Azure Mobile Apps بإرجاع 50 سجلا لكل طلب. يضمن ترحيل الصفحات أن العميل لا يربط مؤشر ترابط واجهة المستخدم الخاصة به ولا الخادم لفترة طويلة جدا، ما يضمن تجربة مستخدم جيدة. لتغيير حجم ترحيل الجدول، قم بزيادة "حجم الاستعلام المسموح به" من جانب الخادم وحجم الصفحة من جانب العميل يتم تعديل "حجم الاستعلام المسموح به" من جانب الخادم باستخدام السمة EnableQuery :

[EnableQuery(PageSize = 500)]

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

كيفية: تعريف وحدة تحكم API مخصصة

توفر وحدة تحكم واجهة برمجة التطبيقات المخصصة الوظائف الأساسية للواجهة الخلفية لتطبيق الأجهزة المحمولة عن طريق الكشف عن نقطة نهاية. يمكنك تسجيل وحدة تحكم واجهة برمجة تطبيقات خاصة بالأجهزة المحمولة باستخدام السمة [MobileAppController]. MobileAppController تقوم السمة بتسجيل المسار، وإعداد مسلسل JSON لتطبيقات الجوال، وتشغيل التحقق من إصدار العميل.

  1. في Visual Studio، انقر بزر الماوس الأيمن فوق مجلد Controllers، ثم انقر فوق Add>Controller، وحدد Web API 2 Controller - Empty وانقر فوق Add.

  2. قم بتوفير اسم وحدة تحكم، مثل CustomController، وانقر فوق إضافة.

  3. في ملف فئة وحدة التحكم الجديدة، أضف العبارة التالية باستخدام:

     using Microsoft.Azure.Mobile.Server.Config;
    
  4. تطبيق السمة [MobileAppController] على تعريف فئة وحدة تحكم واجهة برمجة التطبيقات، كما في المثال التالي:

     [MobileAppController]
     public class CustomController : ApiController
     {
           //...
     }
    
  5. في ملف App_Start/Startup.MobileApp.cs، أضف استدعاء إلى أسلوب ملحق MapApiControllers ، كما في المثال التالي:

     new MobileAppConfiguration()
         .MapApiControllers()
         .ApplyTo(config);
    

يمكنك أيضا استخدام أسلوب الملحق UseDefaultConfiguration() بدلا من MapApiControllers(). لا يزال بإمكان العملاء الوصول إلى أي وحدة تحكم لا تحتوي على MobileAppControllerAttribute ، ولكن قد لا يتم استهلاكها بشكل صحيح من قبل العملاء الذين يستخدمون أي SDK لعميل تطبيق الجوال.

كيفية: العمل مع المصادقة

تستخدم تطبيقات Azure Mobile مصادقة / تخويل خدمة التطبيقات لتأمين الخلفية للأجهزة المحمولة. يوضح لك هذا القسم كيفية تنفيذ المهام التالية المتعلقة بالمصادقة في مشروع خادم .NET الخلفي:

كيفية: إضافة مصادقة إلى مشروع خادم

يمكنك إضافة مصادقة إلى مشروع الخادم الخاص بك عن طريق توسيع كائن MobileAppConfiguration وتكوين برنامج OWIN الوسيط. عند تثبيت حزمة Microsoft.Azure.Mobile.Server.Quickstart واستدعاء أسلوب ملحق UseDefaultConfiguration ، يمكنك التخطي إلى الخطوة 3.

  1. في Visual Studio، قم بتثبيت حزمة Microsoft.Azure.Mobile.Server.Authentication .

  2. في ملف مشروع Startup.cs، أضف السطر التالي من التعليمات البرمجية في بداية أسلوب التكوين :

     app.UseAppServiceAuthentication(config);
    

    يتحقق مكون البرنامج الوسيط OWIN هذا من صحة الرموز المميزة الصادرة عن بوابة App Service المقترنة.

  3. أضف السمة [Authorize] إلى أي وحدة تحكم أو أسلوب يتطلب المصادقة.

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

كيفية: استخدام المصادقة المخصصة لتطبيقك

هام

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

إذا كنت لا ترغب في استخدام أحد موفري App Service Authentication/Authorization، يمكنك تنفيذ نظام تسجيل الدخول الخاص بك. قم بتثبيت حزمة Microsoft.Azure.Mobile.Server.Login للمساعدة في إنشاء رمز المصادقة المميز. قم بتوفير التعليمات البرمجية الخاصة بك للتحقق من صحة بيانات اعتماد المستخدم. على سبيل المثال، يمكنك التحقق من كلمات المرور المملحة والمتجزئة في قاعدة بيانات. في المثال أدناه، isValidAssertion() الأسلوب (المحدد في مكان آخر) مسؤول عن عمليات التحقق هذه.

يتم عرض المصادقة المخصصة عن طريق إنشاء ApiController والكشف register والإجراءات login . يجب على العميل استخدام واجهة مستخدم مخصصة لجمع المعلومات من المستخدم. ثم يتم إرسال المعلومات إلى واجهة برمجة التطبيقات مع استدعاء HTTP POST قياسي. بمجرد أن يتحقق الخادم من صحة التأكيد، يتم إصدار رمز مميز باستخدام AppServiceLoginHandler.CreateToken() الأسلوب . يجب ألا يستخدم ApiController السمة [MobileAppController] .

مثال على login الإجراء:

    public IHttpActionResult Post([FromBody] JObject assertion)
    {
        if (isValidAssertion(assertion)) // user-defined function, checks against a database
        {
            JwtSecurityToken token = AppServiceLoginHandler.CreateToken(new Claim[] { new Claim(JwtRegisteredClaimNames.Sub, assertion["username"]) },
                mySigningKey,
                myAppURL,
                myAppURL,
                TimeSpan.FromHours(24) );
            return Ok(new LoginResult()
            {
                AuthenticationToken = token.RawData,
                User = new LoginResultUser() { UserId = userName.ToString() }
            });
        }
        else // user assertion was not valid
        {
            return this.Request.CreateUnauthorizedResponse();
        }
    }

في المثال السابق، LoginResult وIninResultUser هي كائنات قابلة للتسلسل تعرض الخصائص المطلوبة. يتوقع العميل إرجاع استجابات تسجيل الدخول كعناصر JSON للنموذج:

    {
        "authenticationToken": "<token>",
        "user": {
            "userId": "<userId>"
        }
    }

AppServiceLoginHandler.CreateToken() يتضمن الأسلوب جمهورا ومعلمة مصدر. يتم تعيين كل من هذه المعلمات إلى عنوان URL لجذر التطبيق الخاص بك، باستخدام نظام HTTPS. وبالمثل، يجب عليك تعيين secretKey ليكون قيمة مفتاح توقيع التطبيق الخاص بك. لا توزع مفتاح التوقيع في عميل حيث يمكن استخدامه لنعناع المفاتيح وانتحال شخصية المستخدمين. يمكنك الحصول على مفتاح التوقيع أثناء استضافته في App Service عن طريق الرجوع إلى متغير البيئة WEBSITE_AUTH_SIGNING_KEY . إذا لزم الأمر في سياق تصحيح الأخطاء المحلي، فاتبع الإرشادات الموجودة في قسم تصحيح الأخطاء المحلي باستخدام المصادقة لاسترداد المفتاح وتخزينه كإعداد تطبيق.

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

يمكنك دعم أسلوب العميل loginAsync() القياسي عن طريق التحميل الزائد لمسار المصادقة. إذا اتصل client.loginAsync('custom'); العميل بتسجيل الدخول، يجب أن يكون /.auth/login/customالمسار الخاص بك هو . يمكنك تعيين المسار لوحدة تحكم المصادقة المخصصة باستخدام MapHttpRoute():

config.Routes.MapHttpRoute("custom", ".auth/login/custom", new { controller = "CustomAuth" });

تلميح

loginAsync() يضمن استخدام الأسلوب إرفاق الرمز المميز للمصادقة بكل استدعاء لاحق للخدمة.

كيفية: استرداد معلومات المستخدم المصادق عليها

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

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

SID مشتق من معرف المستخدم الخاص بالموفر وهو ثابت لمستخدم معين وموفر تسجيل الدخول. معرف الأمان خالي للرمز المميز للمصادقة غير الصالحة.

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

تستدعي التعليمات البرمجية التالية أسلوب ملحق GetAppServiceIdentityAsync للحصول على بيانات اعتماد تسجيل الدخول، والتي تتضمن الرمز المميز للوصول المطلوب لتقديم الطلبات مقابل واجهة برمجة تطبيقات Facebook Graph:

// Get the credentials for the logged-in user.
var credentials =
    await this.User
    .GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);

if (credentials.Provider == "Facebook")
{
    // Create a query string with the Facebook access token.
    var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
        + credentials.AccessToken;

    // Create an HttpClient request.
    var client = new System.Net.Http.HttpClient();

    // Request the current user info from Facebook.
    var resp = await client.GetAsync(fbRequestUrl);
    resp.EnsureSuccessStatusCode();

    // Do something here with the Facebook user information.
    var fbInfo = await resp.Content.ReadAsStringAsync();
}

أضف عبارة استخدام لتوفير System.Security.Principal أسلوب ملحق GetAppServiceIdentityAsync .

كيفية: تقييد الوصول إلى البيانات للمستخدمين المعتمدين

في القسم السابق، أظهرنا كيفية استرداد معرف المستخدم لمستخدم تمت مصادقته. يمكنك تقييد الوصول إلى البيانات والموارد الأخرى استنادا إلى هذه القيمة. على سبيل المثال، تعد إضافة عمود userId إلى الجداول وتصفية نتائج الاستعلام حسب معرف المستخدم طريقة بسيطة للحد من البيانات التي تم إرجاعها فقط للمستخدمين المعتمدين. تقوم التعليمات البرمجية التالية بإرجاع صفوف البيانات فقط عندما يطابق SID القيمة في عمود UserId في جدول TodoItem:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

// Only return data rows that belong to the current user.
return Query().Where(t => t.UserId == sid);

يرجع Query()IQueryable الأسلوب الذي يمكن معالجته بواسطة LINQ للتعامل مع التصفية.

كيفية: إضافة إعلامات مؤقتة إلى مشروع خادم

أضف الإعلامات المنبثقة إلى مشروع الخادم الخاص بك عن طريق توسيع كائن MobileAppConfiguration وإنشاء عميل مراكز الإعلامات.

  1. في Visual Studio، انقر بزر الماوس الأيمن فوق مشروع الخادم وانقر فوق إدارة حزم NuGet، وابحث عن Microsoft.Azure.Mobile.Server.Notifications، ثم انقر فوق تثبيت.

  2. كرر هذه الخطوة لتثبيت الحزمة Microsoft.Azure.NotificationHubs ، والتي تتضمن مكتبة عميل مراكز الإعلامات.

  3. في App_Start/Startup.MobileApp.cs، وأضف استدعاء إلى أسلوب ملحق AddPushNotifications() أثناء التهيئة:

     new MobileAppConfiguration()
         // other features...
         .AddPushNotifications()
         .ApplyTo(config);
    
  4. أضف التعليمات البرمجية التالية التي تنشئ عميل مراكز الإعلامات:

     // Get the settings for the server project.
     HttpConfiguration config = this.Configuration;
     MobileAppSettingsDictionary settings =
         config.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
     // Get the Notification Hubs credentials for the Mobile App.
     string notificationHubName = settings.NotificationHubName;
     string notificationHubConnection = settings
         .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
     // Create a new Notification Hub client.
     NotificationHubClient hub = NotificationHubClient
         .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    

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

كيفية: تمكين الدفع المستهدف باستخدام العلامات

تتيح لك مراكز الإعلامات إرسال إعلامات مستهدفة إلى تسجيلات محددة باستخدام العلامات. يتم إنشاء العديد من العلامات تلقائيا:

  • يعرف معرف التثبيت جهازا معينا.
  • يعرف معرف المستخدم المستند إلى SID المصادق عليه مستخدما معينا.

يمكن الوصول إلى معرف التثبيت من خاصية معرف التثبيت على MobileServiceClient. يوضح المثال التالي كيفية استخدام معرف تثبيت لإضافة علامة إلى تثبيت معين في مراكز الإعلامات:

hub.PatchInstallation("my-installation-id", new[]
{
    new PartialUpdateOperation
    {
        Operation = UpdateOperationType.Add,
        Path = "/tags",
        Value = "{my-tag}"
    }
});

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

راجع علامات الإعلامات المنبثقة المضافة من قبل العميل في نموذج التشغيل السريع ل App Service Mobile Apps المكتملة للحصول على مثال.

كيفية: إرسال إعلامات الدفع إلى مستخدم مصادق عليه

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

// Get the current user SID and create a tag for the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;
string userTag = "_UserId:" + sid;

// Build a dictionary for the template with the item message text.
var notification = new Dictionary<string, string> { { "message", item.Text } };

// Send a template notification to the user ID.
await hub.SendTemplateNotificationAsync(notification, userTag);

عند التسجيل للحصول على إعلامات من عميل مصادق عليه، تأكد من اكتمال المصادقة قبل محاولة التسجيل. لمزيد من المعلومات، راجع الدفع إلى المستخدمين في نموذج التشغيل السريع ل App Service Mobile Apps المكتمل لواجهة .NET الخلفية.

كيفية القيام بما يلي: تصحيح أخطاء .NET Server SDK واستكشاف الأخطاء وإصلاحها

توفر Azure App Service العديد من تقنيات تصحيح الأخطاء واستكشاف الأخطاء وإصلاحها لتطبيقات ASP.NET:

تسجيل الدخول

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

لتمكين التشخيص والكتابة إلى السجلات:

  1. اتبع الخطوات الواردة في تمكين تسجيل التطبيق (Windows).

  2. أضف العبارة التالية باستخدام في ملف التعليمات البرمجية:

     using System.Web.Http.Tracing;
    
  3. إنشاء كاتب تتبع للكتابة من الخلفية .NET إلى سجلات التشخيص، كما يلي:

     ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
     traceWriter.Info("Hello, World");
    
  4. أعد نشر مشروع الخادم الخاص بك، والوصول إلى الواجهة الخلفية لتطبيق الأجهزة المحمولة لتنفيذ مسار التعليمات البرمجية مع التسجيل.

  5. قم بتنزيل السجلات وتقييمها، كما هو موضح في ملفات سجل Access.

تصحيح الأخطاء المحلي باستخدام المصادقة

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

يجب أن يكون لديك تطبيق جوال مستند إلى السحابة مع تكوين App Service Authentication/Authorization، ويجب أن يكون لدى العميل نقطة نهاية السحابة المحددة كمضيف تسجيل دخول بديل. راجع وثائق النظام الأساسي للعميل للحصول على الخطوات المحددة المطلوبة.

تأكد من تثبيت Microsoft.Azure.Mobile.Server.Authentication على الواجهة الخلفية للأجهزة المحمولة. بعد ذلك، في فئة بدء تشغيل OWIN للتطبيق الخاص بك، أضف ما يلي، بعد MobileAppConfiguration تطبيقه على HttpConfiguration:

    app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
    {
        SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
        ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
        ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
        TokenHandler = config.GetAppServiceTokenHandler()
    });

في المثال السابق، يجب تكوين إعدادات تطبيق authAudience و authIssuer داخل ملف Web.config الخاص بك ليكون كل عنوان URL لجذر التطبيق الخاص بك، باستخدام نظام HTTPS. وبالمثل، يجب عليك تعيين authSigningKey ليكون قيمة مفتاح توقيع التطبيق الخاص بك. للحصول على مفتاح التوقيع:

  1. انتقل إلى تطبيقك داخل مدخل Microsoft Azure
  2. انقر فوق أدوات، Kudu، Go.
  3. في موقع Kudu Management، انقر فوق Environment.
  4. ابحث عن قيمة WEBSITE_AUTH_SIGNING_KEY.

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