Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här handledningen lägger du till autentisering i snabbstartsprojektet för iOS med hjälp av en identitetsleverantör som stöds. Den här självstudien baseras på snabbstartsguiden för iOS , som du måste slutföra först.
Registrera din app för autentisering och konfigurera App Service
Först måste du registrera din app på en identitetsproviders webbplats, och sedan anger du de providergenererade autentiseringsuppgifterna i mobile apps-serverdelen.
Konfigurera din önskade identitetsprovider genom att följa de providerspecifika anvisningarna:
Upprepa föregående steg för varje leverantör som du vill stödja i din app.
Lägg till din app i URL:erna för tillåten extern omdirigering
Säker autentisering kräver att du definierar ett nytt URL-schema för din app. Detta gör att autentiseringssystemet kan omdirigera tillbaka till din app när autentiseringsprocessen är klar. I den här självstudien använder vi URL-schemat appname genomgående. Du kan dock använda valfritt URL-schema som du väljer. Den bör vara unik för ditt mobilprogram. Så här aktiverar du omdirigeringen på den här serversidan:
I Azure-portalen väljer du din App Service.
Klicka på menyalternativet Autentisering/auktorisering .
Klicka på Azure Active Directory under avsnittet Autentiseringsprovidrar .
Ställ in hanteringsläget på Avancerat.
I URL:er för tillåten extern omdirigering anger du
appname://easyauth.callback. Appnamnet i den här strängen är URL-schemat för ditt mobilprogram. Den bör följa normal URL-specifikation för ett protokoll (använd endast bokstäver och siffror och börja med en bokstav). Du bör anteckna strängen som du väljer eftersom du måste justera din mobilprogramkod med URL-schemat på flera platser.Klicka på OK.
Klicka på Spara.
Begränsa behörigheter till autentiserade användare
Som standard kan API:er i en Mobile Apps-serverdel anropas anonymt. Därefter måste du begränsa åtkomsten till endast autentiserade klienter.
Node.js backend (via Azure-portalen) :
I inställningarna för Mobilappar klickar du på Enkla tabeller och väljer tabellen. Klicka på Ändra behörigheter, välj Endast autentiserad åtkomst för alla behörigheter och klicka sedan på Spara.
.NET-bakände (C#)
I serverprojektet navigerar du till Controllers>TodoItemController.cs.
[Authorize]Lägg till attributet i klassen TodoItemController enligt följande. Om du bara vill begränsa åtkomsten till specifika metoder kan du även använda det här attributet bara för dessa metoder i stället för klassen. Återpublicera serverprojektet.[Authorize] public class TodoItemController : TableController<TodoItem>Node.js backend (via Node.js kod) :
Om du vill kräva autentisering för tabellåtkomst lägger du till följande rad i Node.js-serverskriptet:
table.access = 'authenticated';Mer information finns i Så här: Kräv autentisering för åtkomst till tabeller. Information om hur du laddar ned snabbstartskodprojektet från din webbplats finns i Så här laddar du ned snabbstartskodprojektet Node.js serverdel med Git.
I Xcode trycker du på Kör för att starta appen. Ett undantag utlöses eftersom appen försöker komma åt serverdelen som en oautentiserad användare, men tabellen TodoItem kräver nu autentisering.
Lägga till autentisering i appen
Objective-C:
Öppna QSTodoListViewController.m i Xcode på din Mac och lägg till följande metod:
- (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]; } }]; }Ändra google till microsoftaccount, twitter, facebook eller windowsazureactivedirectory om du inte använder Google som identitetsprovider. Om du använder Facebook måste du tillåta att Facebook-domäner anges i din app.
Ersätt urlScheme med ett unikt namn för ditt program. URLScheme ska vara samma som url-schemaprotokollet som du angav i fältet Tillåtna externa omdirigerings-URL:er i Azure-portalen. urlScheme används av autentiseringsåteranropet för att återgå till din applikation efter att autentiseringsbegäran har slutförts.
Ersätt
[self refresh]iviewDidLoadQSTodoListViewController.m med följande kod:[self loginAndGetData];Öppna filen
QSAppDelegate.hoch lägg till följande kod:#import "QSTodoService.h" @property (strong, nonatomic) QSTodoService *qsTodoService;Öppna filen
QSAppDelegate.moch lägg till följande kod:- (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; } }Lägg till den här koden direkt innan raden som lyder
#pragma mark - Core Data stack. Ersätt appnamnet med det urlScheme-värde som du använde i steg 1.AppName-Info.plistÖppna filen (ersätt AppName med namnet på din app) och lägg till följande kod:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.microsoft.azure.zumo</string> <key>CFBundleURLSchemes</key> <array> <string>appname</string> </array> </dict> </array>Den här koden ska placeras i elementet
<dict>. Ersätt appnamnsträngen (i matrisen för CFBundleURLSchemes) med det appnamn som du valde i steg 1. Du kan också göra dessa ändringar i plist-redigeraren – klicka påAppName-Info.plistfilen i XCode för att öppna plist-redigeraren.Ersätt strängen
com.microsoft.azure.zumoför CFBundleURLName med apple-paketidentifieraren.Tryck på Kör för att starta appen och logga sedan in. När du är inloggad bör du kunna visa listan Todo och göra uppdateringar.
Swift:
Öppna ToDoTableViewController.swift i Xcode på din Mac och lägg till följande metod:
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) }Ändra google till microsoftaccount, twitter, facebook eller windowsazureactivedirectory om du inte använder Google som identitetsprovider. Om du använder Facebook måste du vitlista Facebook-domäner i din app.
Ersätt urlScheme med ett unikt namn för ditt program. URLScheme ska vara samma som url-schemaprotokollet som du angav i fältet Tillåtna externa omdirigerings-URL:er i Azure-portalen. URL-schema används av återanropet för autentisering för att växla tillbaka till din applikation när autentiseringsbegäran har slutförts.
Ta bort raderna
self.refreshControl?.beginRefreshing()ochself.onRefresh(self.refreshControl)i slutet avviewDidLoad()i ToDoTableViewController.swift. Lägg till ett anrop tillloginAndGetData()i deras ställe:loginAndGetData()AppDelegate.swiftÖppna filen och lägg till följande rad iAppDelegateklassen: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 } }Ersätt appnamnet med det urlScheme-värde som du använde i steg 1.
AppName-Info.plistÖppna filen (ersätt AppName med namnet på din app) och lägg till följande kod:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.microsoft.azure.zumo</string> <key>CFBundleURLSchemes</key> <array> <string>appname</string> </array> </dict> </array>Den här koden ska placeras i elementet
<dict>. Ersätt appnamnsträngen (i matrisen för CFBundleURLSchemes) med det appnamn som du valde i steg 1. Du kan också göra dessa ändringar i plist-redigeraren – klicka påAppName-Info.plistfilen i XCode för att öppna plist-redigeraren.Ersätt strängen
com.microsoft.azure.zumoför CFBundleURLName med apple-paketidentifieraren.Tryck på Kör för att starta appen och logga sedan in. När du är inloggad bör du kunna visa listan Todo och göra uppdateringar.
App Service-autentisering använder Apples Inter-App Communication. Mer information om det här ämnet finns i Apple-dokumentationen