Verificatie toevoegen aan uw iOS-app

In deze zelfstudie voegt u verificatie toe aan het iOS-snelstartproject met behulp van een ondersteunde id-provider. Deze zelfstudie is gebaseerd op de snelstartzelfstudie 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.

  1. Configureer uw voorkeursidentiteitsprovider door de providerspecifieke instructies te volgen:

  2. Herhaal de vorige stappen voor elke provider die u in uw app wilt ondersteunen.

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 terugleiden naar uw app zodra het verificatieproces is voltooid. In deze zelfstudie gebruiken we de appnaam van het URL-schema 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:

  1. Selecteer uw App Service in de Azure Portal.

  2. Klik op de menuoptie Verificatie/autorisatie .

  3. Klik op Azure Active Directory in de sectie Verificatieproviders .

  4. Stel de beheermodus in op Geavanceerd.

  5. Voer in de toegestane externe omleidings-URL's in appname://easyauth.callback. De app-naam in deze tekenreeks is het URL-schema voor uw mobiele toepassing. Deze moet voldoen aan de normale URL-specificatie voor een protocol (gebruik alleen letters en cijfers en begin met een letter). Noteer de tekenreeks die u kiest, omdat u de code van uw mobiele toepassing met het URL-schema op verschillende plaatsen moet aanpassen.

  6. Klik op OK.

  7. Klik op Opslaan.

Machtigingen beperken tot 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 voor Mobiele apps op Eenvoudige tabellen en selecteer de tabel. Klik op Machtigingen wijzigen, selecteer Alleen geverifieerde toegang voor alle machtigingen en klik vervolgens op Opslaan.

  • .NET-back-end (C#):

    Navigeer in het serverproject naar Controllers>TodoItemController.cs. Voeg het [Authorize] kenmerk als volgt toe aan de klasse TodoItemController . Als u de toegang tot alleen specifieke methoden wilt beperken, kunt u dit kenmerk ook alleen op deze methoden toepassen in plaats van op de klasse. Publiceer het serverproject opnieuw.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js back-end (via Node.js code):

    Als u verificatie wilt vereisen voor toegang tot tabellen, voegt u de volgende regel toe aan het script Node.js server:

      table.access = 'authenticated';
    

    Zie Procedure : Verificatie vereisen voor toegang tot tabellen voor meer informatie. Voor meer informatie over het downloaden van het codeproject van de quickstart van uw site raadpleegt u Procedure: het Node.js back-end quickstart-codeproject downloaden met behulp van Git.

Druk in Xcode op Uitvoeren om de app te starten. Er wordt een uitzondering gegenereerd omdat de app toegang probeert te krijgen tot de back-end als een niet-geverifieerde gebruiker, maar de tabel TodoItem vereist nu verificatie.

Verificatie toevoegen aan app

Objective-C:

  1. 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 toestaan in uw app.

    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 de Azure Portal. De urlScheme wordt gebruikt door de verificatie-callback om terug te schakelen naar uw toepassing nadat de verificatieaanvraag is voltooid.

  2. Vervang [self refresh] in viewDidLoad in QSTodoListViewController.m door de volgende code:

    [self loginAndGetData];
    
  3. Open bestand QSAppDelegate.h en voeg de volgende code toe:

    #import "QSTodoService.h"
    
    @property (strong, nonatomic) QSTodoService *qsTodoService;
    
  4. Open 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 toe direct vóór de regel voor het lezen #pragma mark - Core Data stackvan . Vervang de appname door de waarde urlScheme die u in stap 1 hebt gebruikt.

  5. 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 tekenreeks appname (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 het AppName-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.

  6. Druk op Uitvoeren om de app te starten en meld u vervolgens aan. Wanneer u bent aangemeld, moet u de takenlijst kunnen bekijken en updates kunnen aanbrengen.

Swift:

  1. 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 op de whitelist zetten.

    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 de Azure Portal. De urlScheme wordt gebruikt door de verificatie-callback om terug te schakelen naar uw toepassing nadat de verificatieaanvraag is voltooid.

  2. Verwijder de regels self.refreshControl?.beginRefreshing() en self.onRefresh(self.refreshControl) aan het einde van viewDidLoad() in ToDoTableViewController.swift. Voeg een aanroep toe aan loginAndGetData() in hun plaats:

    loginAndGetData()
    
  3. Open het AppDelegate.swift bestand en voeg de volgende regel toe aan de AppDelegate 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 appname door de waarde urlScheme die u in stap 1 hebt gebruikt.

  4. 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 tekenreeks appname (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 het AppName-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.

  5. Druk op Uitvoeren om de app te starten en meld u vervolgens 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