Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie voegt u verificatie toe aan het iOS-snelstartproject met behulp van een ondersteunde id-provider. Deze zelfstudie is gebaseerd op de snelstartgids voor iOS die u eerst moet voltooien.
Uw app registreren voor verificatie en de App Service configureren
Eerst moet u uw app registreren op de site van een id-provider en vervolgens stelt u de door de provider gegenereerde referenties in de back-end van Mobile Apps in.
Configureer uw voorkeurs-id-provider door de providerspecifieke instructies te volgen:
Herhaal de vorige stappen voor elke provider die u wilt ondersteunen in uw app.
Uw app toevoegen aan de toegestane externe omleidings-URL's
Voor beveiligde verificatie moet u een nieuw URL-schema voor uw app definiëren. Hierdoor kan het verificatiesysteem terugkeren naar uw app zodra het verificatieproces is voltooid. In deze zelfstudie gebruiken we het URL-schema appname overal. U kunt echter elk URL-schema gebruiken dat u kiest. Deze moet uniek zijn voor uw mobiele toepassing. De omleiding aan de serverzijde inschakelen:
Selecteer uw App Service in Azure Portal.
Klik op de menuoptie Verificatie/autorisatie.
Klik in de sectie Verificatieproviders op Azure Active Directory.
Stel de beheermodus in op Geavanceerd.
Voer in bij de
appname://easyauth.callback
. De app-naam in deze tekenreeks is het URL-schema voor uw mobiele toepassing. Deze moet de normale URL-specificatie voor een protocol volgen (gebruik alleen letters en cijfers en begin met een letter). Noteer de tekenreeks die u kiest, omdat u de code van uw mobiele toepassing moet aanpassen met het URL-schema op verschillende plaatsen.Klik op OK.
Klik op Opslaan.
Machtigingen beperken voor geverifieerde gebruikers
Standaard kunnen API's in een back-end van Mobile Apps anoniem worden aangeroepen. Vervolgens moet u de toegang beperken tot alleen geverifieerde clients.
Node.js back-end (via de Azure portal):
Klik in de instellingen van Mobile Apps op Easy Tables en selecteer de tabel. Klik op Machtigingen wijzigen, selecteer geverifieerde toegang alleen voor alle machtigingen en klik vervolgens op Opslaan.
.NET-back-end (C#):
Navigeer in het serverproject naar Controllers>TodoItemController.cs. Voeg als volgt het kenmerk
[Authorize]
toe aan de klasse TodoItemController. Als u alleen de toegang tot specifieke methoden wilt beperken, kunt u dit kenmerk ook alleen toepassen op deze methoden in plaats van op de klasse. Publiceer het serverproject opnieuw.[Authorize] public class TodoItemController : TableController<TodoItem>
Node.js backend (via Node.js code):
Als u verificatie voor tabeltoegang wilt vereisen, voegt u de volgende regel toe aan het Node.js serverscript:
table.access = 'authenticated';
Voor meer informatie, zie Hoe: Verificatie vereisen voor toegang tot tabellen. Zie How to: Download the Node.js backend quickstart code project using Gitvoor meer informatie over het downloaden van het quickstart-codeproject van uw site.
Druk in Xcode op Uitvoeren om de app te starten. Er wordt een uitzondering gegenereerd omdat de app probeert toegang te krijgen tot de back-end als een niet-geverifieerde gebruiker, maar de todoItem-tabel vereist nu verificatie.
Verificatie toevoegen aan app
Objective-C:
Open op uw Mac QSTodoListViewController.m in Xcode en voeg de volgende methode toe:
- (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]; } }]; }
Wijzig google in microsoftaccount, twitter, facebook of windowsazureactivedirectory als u Google niet gebruikt als uw id-provider. Als u Facebook gebruikt, moet u Facebook-domeinen in uw app toestaan.
Vervang de urlScheme door een unieke naam voor uw toepassing. De urlScheme moet hetzelfde zijn als het URL Scheme-protocol dat u hebt opgegeven in het veld Toegestane externe omleidings-URL's in Azure Portal. De urlScheme wordt gebruikt door de authenticatie callback om terug te schakelen naar uw toepassing nadat de authenticatieaanvraag is voltooid.
Vervang
[self refresh]
inviewDidLoad
QSTodoListViewController.m door de volgende code:[self loginAndGetData];
Open het bestand
QSAppDelegate.h
en voeg de volgende code toe:#import "QSTodoService.h" @property (strong, nonatomic) QSTodoService *qsTodoService;
Open het bestand
QSAppDelegate.m
en voeg de volgende code toe:- (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; } }
Voeg deze code direct toe voordat de regel die luidt
#pragma mark - Core Data stack
. Vervang de app-naam door de urlScheme-waarde die u in stap 1 hebt gebruikt.Open het
AppName-Info.plist
bestand (vervang AppName door de naam van uw app) en voeg de volgende code toe:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.microsoft.azure.zumo</string> <key>CFBundleURLSchemes</key> <array> <string>appname</string> </array> </dict> </array>
Deze code moet in het
<dict>
element worden geplaatst. Vervang de app-naamtekenreeks (in de matrix voor CFBundleURLSchemes) door de app-naam die u in stap 1 hebt gekozen. U kunt deze wijzigingen ook aanbrengen in de plist-editor. Klik op hetAppName-Info.plist
bestand in XCode om de plist-editor te openen.Vervang de
com.microsoft.azure.zumo
tekenreeks voor CFBundleURLName door uw Apple-bundel-id.Druk op Uitvoeren om de app te starten en meld u aan. Wanneer u bent aangemeld, moet u de takenlijst kunnen bekijken en updates kunnen aanbrengen.
Swift:
Open Op uw Mac ToDoTableViewController.swift in Xcode en voeg de volgende methode toe:
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) }
Wijzig google in microsoftaccount, twitter, facebook of windowsazureactivedirectory als u Google niet gebruikt als uw id-provider. Als u Facebook gebruikt, moet u Facebook-domeinen in uw app opnemen in een whitelist.
Vervang de urlScheme door een unieke naam voor uw toepassing. De urlScheme moet hetzelfde zijn als het URL Scheme-protocol dat u hebt opgegeven in het veld Toegestane externe omleidings-URL's in Azure Portal. De urlScheme wordt gebruikt door de callback voor verificatie om terug te schakelen naar uw toepassing nadat de verificatieaanvraag is voltooid.
Verwijder de regels
self.refreshControl?.beginRefreshing()
enself.onRefresh(self.refreshControl)
aan het einde vanviewDidLoad()
ToDoTableViewController.swift. Voeg een aanroep toe aan hun plaats:loginAndGetData()
loginAndGetData()
Open het
AppDelegate.swift
bestand en voeg de volgende regel toe aan deAppDelegate
klasse: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 } }
Vervang de app-naam door de urlScheme-waarde die u in stap 1 hebt gebruikt.
Open het
AppName-Info.plist
bestand (vervang AppName door de naam van uw app) en voeg de volgende code toe:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.microsoft.azure.zumo</string> <key>CFBundleURLSchemes</key> <array> <string>appname</string> </array> </dict> </array>
Deze code moet in het
<dict>
element worden geplaatst. Vervang de app-naamtekenreeks (in de matrix voor CFBundleURLSchemes) door de app-naam die u in stap 1 hebt gekozen. U kunt deze wijzigingen ook aanbrengen in de plist-editor. Klik op hetAppName-Info.plist
bestand in XCode om de plist-editor te openen.Vervang de
com.microsoft.azure.zumo
tekenreeks voor CFBundleURLName door uw Apple-bundel-id.Druk op Uitvoeren om de app te starten en meld u aan. Wanneer u bent aangemeld, moet u de takenlijst kunnen bekijken en updates kunnen aanbrengen.
App Service-verificatie maakt gebruik van Apples Inter-App Communication. Raadpleeg de Apple-documentatie voor meer informatie over dit onderwerp