Hinzufügen der Authentifizierung zu Ihrer iOS-AppAdd authentication to your iOS app

Hinweis

Visual Studio App Center unterstützt End-to-End- und integrierte Dienste, die für die Entwicklung mobiler Apps von zentraler Bedeutung sind.Visual Studio App Center supports end to end and integrated services central to mobile app development. Entwickler können Build-, Test- und Verteilungsdienste nutzen, um eine Pipeline für Continuous Integration und Delivery einzurichten.Developers can use Build, Test and Distribute services to set up Continuous Integration and Delivery pipeline. Nach der Bereitstellung der App können Entwickler den Status und die Nutzung ihrer App mithilfe der Analyse- und Diagnosedienste überwachen und mit Benutzern über den Pushdienst interagieren.Once the app is deployed, developers can monitor the status and usage of their app using the Analytics and Diagnostics services, and engage with users using the Push service. Entwickler können auch den Authentifizierungsdienst nutzen, um ihre Benutzer zu authentifizieren, und den Datendienst, um App-Daten dauerhaft in der Cloud zu speichern und zu synchronisieren.Developers can also leverage Auth to authenticate their users and Data service to persist and sync app data in the cloud.

Falls Sie Clouddienste in Ihre mobile Anwendung integrieren möchten, sollten Sie sich noch heute für App Center registrieren.If you are looking to integrate cloud services in your mobile application, sign up with App Center today.

In diesem Lernprogramm fügen Sie dem iOS-Schnellstartprojekt mithilfe eines unterstützten Identitätsanbieters eine Authentifizierung hinzu.In this tutorial, you add authentication to the iOS quick start project using a supported identity provider. Dieses Lernprogramm baut auf dem iOS-Schnellstartprojekt auf, das Sie zuerst abschließen müssen.This tutorial is based on the iOS quick start tutorial, which you must complete first.

Registrieren Ihrer App für die Authentifizierung und Konfigurieren von App ServiceRegister your app for authentication and configure the App Service

Zuerst müssen Sie Ihre App auf der Website eines Identitätsanbieters registrieren und anschließend die vom Anbieter generierten Anmeldeinformationen im Mobile Apps-Back-End festlegen.First, you need to register your app at an identity provider's site, and then you will set the provider-generated credentials in the Mobile Apps back end.

  1. Konfigurieren Sie Ihren bevorzugten Identitätsanbieter anhand der anbieterspezifischen Anweisungen:Configure your preferred identity provider by following the provider-specific instructions:

  2. Wiederholen Sie die oben stehenden Schritte für jeden Anbieter, den Sie in Ihrer App unterstützen möchten.Repeat the previous steps for each provider you want to support in your app.

Hinzufügen Ihrer App zu den zulässigen externen Umleitungs-URLsAdd your app to the Allowed External Redirect URLs

Eine sichere Authentifizierung erfordert, dass Sie ein neues URL-Schema für Ihre App definieren.Secure authentication requires that you define a new URL scheme for your app. Dies ermöglicht dem Authentifizierungssystem die erneute Umleitung an Ihre App, sobald der Authentifizierungsprozess abgeschlossen ist.This allows the authentication system to redirect back to your app once the authentication process is complete. In diesem Tutorial verwenden wir ausschließlich das URL-Schema appname.In this tutorial, we use the URL scheme appname throughout. Sie können jedoch ein beliebiges URL-Schema auswählen und verwenden.However, you can use any URL scheme you choose. Es sollte für Ihre mobile Anwendung eindeutig sein.It should be unique to your mobile application. So aktivieren Sie die Umleitung auf der Serverseite:To enable the redirection on th server side:

  1. Wählen Sie im Azure-Portal App Service aus.In the Azure portal, select your App Service.

  2. Klicken Sie auf die Menüoption Authentifizierung/Autorisierung.Click the Authentication / Authorization menu option.

  3. Klicken Sie unter dem Abschnitt Authentifizierungsanbieter auf Azure Active Directory.Click Azure Active Directory under the Authentication Providers section.

  4. Legen Sie den Verwaltungsmodus auf Erweitert fest.Set the Management mode to Advanced.

  5. Geben Sie in Zulässige externe Umleitungs-URLs appname://easyauth.callback ein.In the Allowed External Redirect URLs, enter appname://easyauth.callback. Das appname-Element in dieser Zeichenfolge ist das URL-Schema für Ihre mobile Anwendung.The appname in this string is the URL Scheme for your mobile application. Es sollte der normalen URL-Spezifikation für ein Protokoll folgen (nur aus Buchstaben und Zahlen bestehen und mit einem Buchstaben beginnen).It should follow normal URL specification for a protocol (use letters and numbers only, and start with a letter). Notieren Sie sich die gewählte Zeichenfolge, da Sie später Ihren mobilen Anwendungscode mehrfach mit dem URL-Schema anpassen müssen.You should make a note of the string that you choose as you will need to adjust your mobile application code with the URL Scheme in several places.

  6. Klicken Sie auf OK.Click OK.

  7. Klicken Sie auf Speichern.Click Save.

Einschränken von Berechtigungen für authentifizierte BenutzerRestrict permissions to authenticated users

Standardmäßig können APIs auf Mobile Apps-Back-Ends anonym aufgerufen werden.By default, APIs in a Mobile Apps back end can be invoked anonymously. Als Nächstes müssen Sie den Zugriff auf authentifizierte Clients beschränken.Next, you need to restrict access to only authenticated clients.

  • Node.js-Back-End (über das Azure-Portal):Node.js back end (via the Azure portal) :

    Klicken Sie in den Einstellungen von Mobile Apps auf Einfache Tabellen, und wählen Sie Ihre Tabelle aus.In your Mobile Apps settings, click Easy Tables and select your table. Klicken Sie auf Berechtigungen ändern, wählen Sie für alle Berechtigungen Authenticated access only (Nur authentifizierter Zugriff) aus, und klicken Sie auf Speichern.Click Change permissions, select Authenticated access only for all permissions, and then click Save.

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

    Navigieren Sie im Serverprojekt zu Controller > TodoItemController.cs.In the server project, navigate to Controllers > TodoItemController.cs. Fügen Sie das [Authorize]-Attribut der TodoItemController-Klasse wie folgt hinzu:Add the [Authorize] attribute to the TodoItemController class, as follows. Um den Zugriff auf bestimmte Methoden zu beschränken, können Sie dieses Attribut auch nur auf diese Methoden anstelle der Klasse anwenden.To restrict access only to specific methods, you can also apply this attribute just to those methods instead of the class. Veröffentlichen Sie das Serverprojekt erneut.Republish the server project.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js-Back-End (über Node.js-Code) :Node.js backend (via Node.js code) :

    Um für den Zugriff auf Tabellen eine Authentifizierung anzufordern, fügen Sie die folgende Zeile in das Node.js-Serverskript ein:To require authentication for table access, add the following line to the Node.js server script:

      table.access = 'authenticated';
    

    Weitere Details finden Sie unter Gewusst wie: Erzwingen der Authentifizierung für den Zugriff auf Tabellen.For more details, see How to: Require authentication for access to tables. Informationen zum Herunterladen des Schnellstart-Codeprojekts von Ihrer Website finden Sie unter Vorgehensweise: Herunterladen des Schnellstart-Codeprojekts für das Node.js-Back-End mit Git.To learn how to download the quickstart code project from your site, see How to: Download the Node.js backend quickstart code project using Git.

Klicken Sie in Xcode auf Run , um die App zu starten.In Xcode, press Run to start the app. Eine Ausnahme wird ausgelöst, da die App als nicht authentifizierter Benutzer auf das Back-End zugreift, aber die TodoItem-Tabelle nun eine Authentifizierung verlangt.An exception is raised because the app attempts to access the backend as an unauthenticated user, but the TodoItem table now requires authentication.

Hinzufügen von Authentifizierung zur AppAdd authentication to app

Objective-C:Objective-C:

  1. Öffnen Sie auf dem Mac QSTodoListViewController.m in Xcode, und fügen Sie folgende Methode hinzu:On your Mac, open QSTodoListViewController.m in Xcode and add the following method:

    - (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];
            }
        }];
    }
    

    Wenn Sie Google nicht als Identitätsanbieter nutzen, ändern Sie google in microsoftaccount, twitter, facebook oder windowsazureactivedirectory.Change google to microsoftaccount, twitter, facebook, or windowsazureactivedirectory if you are not using Google as your identity provider. Wenn Sie Facebook verwenden, müssen Sie die Facebook-Domänen der Positivliste in Ihrer App hinzufügen.If you use Facebook, you must whitelist Facebook domains in your app.

    Ersetzen Sie urlScheme mit einem eindeutigen Namen für Ihre Anwendung.Replace the urlScheme with a unique name for your application. Der urlScheme-Wert muss mit dem URL-Schema-Protokoll übereinstimmen, das Sie im Azure-Portal im Feld Zulässige externe Umleitungs-URLs angegeben haben.The urlScheme should be the same as the URL Scheme protocol that you specified in the Allowed External Redirect URLs field in the Azure portal. Der urlScheme-Wert wird vom Authentifizierungsrückruf verwendet, um nach Abschluss der Authentifizierungsanforderung zurück zu Ihrer Anwendung zu wechseln.The urlScheme is used by the authentication callback to switch back to your application after the authentication request is complete.

  2. In QSTodoListViewController.m ersetzen Sie [self refresh] in viewDidLoad durch folgenden Code:Replace [self refresh] in viewDidLoad in QSTodoListViewController.m with the following code:

    [self loginAndGetData];
    
  3. Öffnen Sie die Datei QSAppDelegate.h, und fügen Sie den folgenden Code hinzu:Open the QSAppDelegate.h file and add the following code:

    #import "QSTodoService.h"
    
    @property (strong, nonatomic) QSTodoService *qsTodoService;
    
  4. Öffnen Sie die Datei QSAppDelegate.m, und fügen Sie den folgenden Code hinzu:Open the QSAppDelegate.m file and add the following code:

    - (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;
        }
    }
    

    Fügen Sie diesen Code direkt vor der Zeile #pragma mark - Core Data stack hinzu.Add this code directly before the line reading #pragma mark - Core Data stack. Ersetzen Sie appname durch den in Schritt 1 verwendeten urlScheme-Wert.Replace the appname with the urlScheme value that you used in step 1.

  5. Öffnen Sie die Datei AppName-Info.plist (ersetzen Sie „AppName“ mit dem Namen Ihrer App), und fügen Sie den folgenden Code hinzu:Open the AppName-Info.plist file (replacing AppName with the name of your app), and add the following code:

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

    Dieser Code sollte innerhalb des <dict>-Elements platziert werden.This code should be placed inside the <dict> element. Ersetzen Sie die appname-Zeichenfolge (innerhalb des Arrays für CFBundleURLSchemes) durch den App-Namen, den Sie in Schritt 1 ausgewählt haben.Replace the appname string (within the array for CFBundleURLSchemes) with the app name you chose in step 1. Sie können diese Änderungen auch im plist-Editor vornehmen: Klicken Sie in XCode auf die Datei AppName-Info.plist, um den plist-Editor zu öffnen.You can also make these changes in the plist editor - click on the AppName-Info.plist file in XCode to open the plist editor.

    Ersetzen Sie die com.microsoft.azure.zumo-Zeichenfolge für CFBundleURLName durch Ihre Apple-Paket-ID.Replace the com.microsoft.azure.zumo string for CFBundleURLName with your Apple bundle identifier.

  6. Klicken Sie auf Ausführen, um die App zu starten, und melden Sie sich an.Press Run to start the app, and then log in. Nach der Anmeldung sollten Sie die Todo-Liste anzeigen und Änderungen vornehmen können.When you are logged in, you should be able to view the Todo list and make updates.

Swift:Swift:

  1. Öffnen Sie auf dem Mac ToDoTableViewController.swift in Xcode, und fügen Sie folgende Methode hinzu:On your Mac, open ToDoTableViewController.swift in Xcode and add the following method:

    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)
    
    }
    

    Wenn Sie Google nicht als Identitätsanbieter nutzen, ändern Sie google in microsoftaccount, twitter, facebook oder windowsazureactivedirectory.Change google to microsoftaccount, twitter, facebook, or windowsazureactivedirectory if you are not using Google as your identity provider. Wenn Sie Facebook verwenden, müssen Sie die Facebook-Domänen der Positivliste in Ihrer App hinzufügen.If you use Facebook, you must whitelist Facebook domains in your app.

    Ersetzen Sie urlScheme mit einem eindeutigen Namen für Ihre Anwendung.Replace the urlScheme with a unique name for your application. Der urlScheme-Wert muss mit dem URL-Schema-Protokoll übereinstimmen, das Sie im Azure-Portal im Feld Zulässige externe Umleitungs-URLs angegeben haben.The urlScheme should be the same as the URL Scheme protocol that you specified in the Allowed External Redirect URLs field in the Azure portal. Der urlScheme-Wert wird vom Authentifizierungsrückruf verwendet, um nach Abschluss der Authentifizierungsanforderung zurück zu Ihrer Anwendung zu wechseln.The urlScheme is used by the authentication callback to switch back to your application after the authentication request is complete.

  2. Entfernen Sie in ToDoTableViewController.swift die Zeilen self.refreshControl?.beginRefreshing() und self.onRefresh(self.refreshControl) am Ende von viewDidLoad().Remove the lines self.refreshControl?.beginRefreshing() and self.onRefresh(self.refreshControl) at the end of viewDidLoad() in ToDoTableViewController.swift. Fügen Sie an deren Stelle einen Aufruf von loginAndGetData() ein:Add a call to loginAndGetData() in their place:

    loginAndGetData()
    
  3. Öffnen Sie die Datei AppDelegate.swift, und fügen Sie der AppDelegate-Klasse die folgende Zeile hinzu:Open the AppDelegate.swift file and add the following line to the AppDelegate class:

    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
        }
    }
    

    Ersetzen Sie appname durch den in Schritt 1 verwendeten urlScheme-Wert.Replace the appname with the urlScheme value that you used in step 1.

  4. Öffnen Sie die Datei AppName-Info.plist (ersetzen Sie „AppName“ mit dem Namen Ihrer App), und fügen Sie den folgenden Code hinzu:Open the AppName-Info.plist file (replacing AppName with the name of your app), and add the following code:

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

    Dieser Code sollte innerhalb des <dict>-Elements platziert werden.This code should be placed inside the <dict> element. Ersetzen Sie die appname-Zeichenfolge (innerhalb des Arrays für CFBundleURLSchemes) durch den App-Namen, den Sie in Schritt 1 ausgewählt haben.Replace the appname string (within the array for CFBundleURLSchemes) with the app name you chose in step 1. Sie können diese Änderungen auch im plist-Editor vornehmen: Klicken Sie in XCode auf die Datei AppName-Info.plist, um den plist-Editor zu öffnen.You can also make these changes in the plist editor - click on the AppName-Info.plist file in XCode to open the plist editor.

    Ersetzen Sie die com.microsoft.azure.zumo-Zeichenfolge für CFBundleURLName durch Ihre Apple-Paket-ID.Replace the com.microsoft.azure.zumo string for CFBundleURLName with your Apple bundle identifier.

  5. Klicken Sie auf Ausführen, um die App zu starten, und melden Sie sich an.Press Run to start the app, and then log in. Nach der Anmeldung sollten Sie die Todo-Liste anzeigen und Änderungen vornehmen können.When you are logged in, you should be able to view the Todo list and make updates.

Die App Service-Authentifizierung verwendet Inter-App Communication von Apple.App Service Authentication uses Apples Inter-App Communication. Weitere Informationen zu diesem Thema finden Sie in der Apple-Dokumentation.For more details on this subject, refer to the Apple Documentation