إضافة مصادقة إلى تطبيق iOS
في هذا البرنامج التعليمي، يمكنك إضافة المصادقة إلى مشروع التشغيل السريع لنظام التشغيل iOS باستخدام موفر هوية مدعوم. يعتمد هذا البرنامج التعليمي على البرنامج التعليمي للبدء السريع لنظام التشغيل iOS ، والذي يجب إكماله أولا.
تسجيل تطبيقك للمصادقة وتكوين App Service
أولا، تحتاج إلى تسجيل تطبيقك في موقع موفر الهوية، ثم ستقوم بتعيين بيانات الاعتماد التي أنشأها الموفر في النهاية الخلفية لتطبيقات الأجهزة المحمولة.
قم بتكوين موفر الهوية المفضل لديك باتباع الإرشادات الخاصة بالموفر:
كرر الخطوات السابقة لكل موفر تريد دعمه في تطبيقك.
إضافة تطبيقك إلى عناوين URL المسموح بها لإعادة التوجيه الخارجي
تتطلب المصادقة الآمنة تحديد نظام URL جديد لتطبيقك. يسمح هذا لنظام المصادقة بإعادة التوجيه مرة أخرى إلى تطبيقك بمجرد اكتمال عملية المصادقة. في هذا البرنامج التعليمي، نستخدم اسم تطبيق نظام URL في جميع أنحاء. ومع ذلك، يمكنك استخدام أي نظام URL تختاره. يجب أن يكون فريدا لتطبيق الهاتف المحمول الخاص بك. لتمكين إعادة التوجيه على جانب الخادم:
في مدخل Microsoft Azure، حدد App Service.
انقر فوق خيار قائمة المصادقة / التخويل .
انقر فوق Azure Active Directory ضمن قسم Authentication Providers .
تعيين وضع الإدارة إلى خيارات متقدمة.
في عناوين URL المسموح بها لإعادة التوجيه الخارجي، أدخل
appname://easyauth.callback
. اسم التطبيق في هذه السلسلة هو نظام URL لتطبيق الجوال الخاص بك. يجب أن تتبع مواصفات URL العادية للبروتوكول (استخدم الأحرف والأرقام فقط، وابدأ بحرف). يجب عليك تدوين ملاحظة عن السلسلة التي تختارها حيث ستحتاج إلى ضبط التعليمات البرمجية لتطبيق الجوال الخاص بك باستخدام نظام URL في عدة أماكن.انقر فوق موافق.
انقر فوق 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:
على جهاز 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 بواسطة رد اتصال المصادقة للتبديل مرة أخرى إلى التطبيق الخاص بك بعد اكتمال طلب المصادقة.
استبدل
[self refresh]
في QSTodoListViewController.m بالتعليمات البرمجيةviewDidLoad
التالية:[self loginAndGetData];
QSAppDelegate.h
افتح الملف وأضف التعليمات البرمجية التالية:#import "QSTodoService.h" @property (strong, nonatomic) QSTodoService *qsTodoService;
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.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.اضغط على تشغيل لبدء تشغيل التطبيق، ثم قم بتسجيل الدخول. عند تسجيل الدخول، يجب أن تكون قادرا على عرض قائمة Todo وإجراء التحديثات.
Swift:
على جهاز 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 بواسطة رد اتصال المصادقة للتبديل مرة أخرى إلى التطبيق الخاص بك بعد اكتمال طلب المصادقة.
قم بإزالة الأسطر
self.refreshControl?.beginRefreshing()
وفيself.onRefresh(self.refreshControl)
نهايةviewDidLoad()
في ToDoTableViewController.swift. أضف مكالمة إلىloginAndGetData()
مكانها:loginAndGetData()
افتح
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.
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.اضغط على تشغيل لبدء تشغيل التطبيق، ثم قم بتسجيل الدخول. عند تسجيل الدخول، يجب أن تكون قادرا على عرض قائمة Todo وإجراء التحديثات.
تستخدم App Service Authentication Apples Inter-App Communication. لمزيد من التفاصيل حول هذا الموضوع، راجع وثائق Apple