إضافة مصادقة إلى تطبيق iOS

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

تسجيل تطبيقك للمصادقة وتكوين App Service

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

  1. قم بتكوين موفر الهوية المفضل لديك باتباع الإرشادات الخاصة بالموفر:

  2. كرر الخطوات السابقة لكل موفر تريد دعمه في تطبيقك.

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

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

  1. في مدخل Microsoft Azure، حدد App Service.

  2. انقر فوق خيار قائمة المصادقة / التخويل .

  3. انقر فوق Azure Active Directory ضمن قسم Authentication Providers .

  4. تعيين وضع الإدارة إلى خيارات متقدمة.

  5. في عناوين URL المسموح بها لإعادة التوجيه الخارجي، أدخل appname://easyauth.callback. اسم التطبيق في هذه السلسلة هو نظام URL لتطبيق الجوال الخاص بك. يجب أن تتبع مواصفات URL العادية للبروتوكول (استخدم الأحرف والأرقام فقط، وابدأ بحرف). يجب عليك تدوين ملاحظة عن السلسلة التي تختارها حيث ستحتاج إلى ضبط التعليمات البرمجية لتطبيق الجوال الخاص بك باستخدام نظام URL في عدة أماكن.

  6. انقر فوق ⁧⁩موافق⁧⁩.

  7. انقر فوق Save.

تقييد الأذونات للمستخدمين المصادق عليهم

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

  • Node.js الخلفية (عبر مدخل Microsoft Azure) :

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

  • النهاية الخلفية ل .NET (C#):

    في مشروع الخادم، انتقل إلى Controllers>TodoItemController.cs. أضف السمة [Authorize] إلى فئة TodoItemController ، كما يلي. لتقييد الوصول إلى أساليب معينة فقط، يمكنك أيضا تطبيق هذه السمة فقط على هذه الأساليب بدلا من الفئة . إعادة نشر مشروع الخادم.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js الخلفية (عبر التعليمات البرمجية Node.js) :

    لطلب المصادقة للوصول إلى الجدول، أضف السطر التالي إلى البرنامج النصي لخادم Node.js:

      table.access = 'authenticated';
    

    لمزيد من التفاصيل، راجع كيفية: طلب المصادقة للوصول إلى الجداول. لمعرفة كيفية تنزيل مشروع التعليمات البرمجية للتشغيل السريع من موقعك، راجع كيفية: تنزيل مشروع رمز التشغيل السريع Node.js الخلفية باستخدام Git.

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

إضافة المصادقة إلى التطبيق

Objective-C:

  1. على جهاز Mac، افتح QSTodoListViewController.m في Xcode وأضف الأسلوب التالي:

    - (void)loginAndGetData
    {
        QSAppDelegate *appDelegate = (QSAppDelegate *)[UIApplication sharedApplication].delegate;
        appDelegate.qsTodoService = self.todoService;
    
        [self.todoService.client loginWithProvider:@"google" urlScheme:@"appname" controller:self animated:YES completion:^(MSUser * _Nullable user, NSError * _Nullable error) {
            if (error) {
                NSLog(@"Login failed with error: %@, %@", error, [error userInfo]);
            }
            else {
                self.todoService.client.currentUser = user;
                NSLog(@"User logged in: %@", user.userId);
    
                [self refresh];
            }
        }];
    }
    

    قم بتغيير google إلى microsoftaccount أو twitter أو facebook أو windowsazureactivedirectory إذا كنت لا تستخدم Google كموفر هويتك. إذا كنت تستخدم Facebook، يجب السماح بمجالات Facebook في تطبيقك.

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

  2. استبدل [self refresh] في QSTodoListViewController.m بالتعليمات البرمجية viewDidLoad التالية:

    [self loginAndGetData];
    
  3. QSAppDelegate.h افتح الملف وأضف التعليمات البرمجية التالية:

    #import "QSTodoService.h"
    
    @property (strong, nonatomic) QSTodoService *qsTodoService;
    
  4. QSAppDelegate.m افتح الملف وأضف التعليمات البرمجية التالية:

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
    {
        if ([[url.scheme lowercaseString] isEqualToString:@"appname"]) {
            // Resume login flow
            return [self.qsTodoService.client resumeWithURL:url];
        }
        else {
            return NO;
        }
    }
    

    أضف هذه التعليمة البرمجية مباشرة قبل قراءة #pragma mark - Core Data stackالسطر . استبدل اسم التطبيق بقيمة urlScheme التي استخدمتها في الخطوة 1.

  5. AppName-Info.plist افتح الملف (استبدال AppName باسم تطبيقك)، وأضف التعليمات البرمجية التالية:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.microsoft.azure.zumo</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appname</string>
            </array>
        </dict>
    </array>
    

    يجب وضع هذه التعليمة البرمجية <dict> داخل العنصر . استبدل سلسلة اسم التطبيق (ضمن صفيف CFBundleURLSchemes) باسم التطبيق الذي اخترته في الخطوة 1. يمكنك أيضا إجراء هذه التغييرات في محرر plist - انقر فوق AppName-Info.plist الملف في XCode لفتح محرر plist.

    com.microsoft.azure.zumo استبدل سلسلة CFBundleURLName بمعرف حزمة Apple.

  6. اضغط على تشغيل لبدء تشغيل التطبيق، ثم قم بتسجيل الدخول. عند تسجيل الدخول، يجب أن تكون قادرا على عرض قائمة Todo وإجراء التحديثات.

Swift:

  1. على جهاز Mac، افتح ToDoTableViewController.swift في Xcode وأضف الأسلوب التالي:

    func loginAndGetData() {
    
        guard let client = self.table?.client, client.currentUser == nil else {
            return
        }
    
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.todoTableViewController = self
    
        let loginBlock: MSClientLoginBlock = {(user, error) -> Void in
            if (error != nil) {
                print("Error: \(error?.localizedDescription)")
            }
            else {
                client.currentUser = user
                print("User logged in: \(user?.userId)")
            }
        }
    
        client.login(withProvider:"google", urlScheme: "appname", controller: self, animated: true, completion: loginBlock)
    
    }
    

    قم بتغيير google إلى microsoftaccount أو twitter أو facebook أو windowsazureactivedirectory إذا كنت لا تستخدم Google كموفر هويتك. إذا كنت تستخدم Facebook، فيجب عليك إدراج مجالات Facebook في تطبيقك.

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

  2. قم بإزالة الأسطر self.refreshControl?.beginRefreshing() وفي self.onRefresh(self.refreshControl) نهاية viewDidLoad() في ToDoTableViewController.swift. أضف مكالمة إلى loginAndGetData() مكانها:

    loginAndGetData()
    
  3. افتح AppDelegate.swift الملف وأضف السطر التالي إلى AppDelegate الفئة:

    var todoTableViewController: ToDoTableViewController?
    
    func application(_ application: UIApplication, openURL url: NSURL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        if url.scheme?.lowercased() == "appname" {
            return (todoTableViewController!.table?.client.resume(with: url as URL))!
        }
        else {
            return false
        }
    }
    

    استبدل اسم التطبيق بقيمة urlScheme التي استخدمتها في الخطوة 1.

  4. AppName-Info.plist افتح الملف (استبدال AppName باسم تطبيقك)، وأضف التعليمات البرمجية التالية:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.microsoft.azure.zumo</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appname</string>
            </array>
        </dict>
    </array>
    

    يجب وضع هذه التعليمة البرمجية <dict> داخل العنصر . استبدل سلسلة اسم التطبيق (ضمن صفيف CFBundleURLSchemes) باسم التطبيق الذي اخترته في الخطوة 1. يمكنك أيضا إجراء هذه التغييرات في محرر plist - انقر فوق AppName-Info.plist الملف في XCode لفتح محرر plist.

    com.microsoft.azure.zumo استبدل سلسلة CFBundleURLName بمعرف حزمة Apple.

  5. اضغط على تشغيل لبدء تشغيل التطبيق، ثم قم بتسجيل الدخول. عند تسجيل الدخول، يجب أن تكون قادرا على عرض قائمة Todo وإجراء التحديثات.

تستخدم App Service Authentication Apples Inter-App Communication. لمزيد من التفاصيل حول هذا الموضوع، راجع وثائق Apple