Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm fügen Sie dem iOS-Schnellstartprojekt mithilfe eines unterstützten Identitätsanbieters Authentifizierung hinzu. Dieses Lernprogramm basiert auf dem iOS-Schnellstart-Lernprogramm , das Sie zuerst abschließen müssen.
Registrieren Sie Ihre App für die Authentifizierung und konfigurieren Sie den App-Service.
Zuerst müssen Sie Ihre App auf der Website eines Identitätsanbieters registrieren, und dann legen Sie die vom Anbieter generierten Anmeldeinformationen im Back-End für mobile Apps fest.
Konfigurieren Sie Ihren bevorzugten Identitätsanbieter, indem Sie die anbieterspezifischen Anweisungen befolgen:
Wiederholen Sie die vorherigen Schritte für jeden Anbieter, den Sie in Ihrer App unterstützen möchten.
Fügen Sie Ihre App zu den zugelassenen externen Umleitungs-URLs hinzu.
Für die sichere Authentifizierung müssen Sie ein neues URL-Schema für Ihre App definieren. Auf diese Weise kann das Authentifizierungssystem wieder zu Ihrer App umgeleitet werden, sobald der Authentifizierungsprozess abgeschlossen ist. In diesem Lernprogramm verwenden wir das URL-Schema App-Namen. Sie können jedoch jedes von Ihnen ausgewählte URL-Schema verwenden. Es sollte für Ihre mobile Anwendung einzigartig sein. So aktivieren Sie die Umleitung auf der Serverseite:
Wählen Sie im Azure-PortalIhren App-Dienst aus.
Klicken Sie auf die Menüoption Authentifizierung/Autorisierung.
Klicken Sie im Abschnitt "Authentifizierungsanbieter" auf Azure Active Directory.
Legen Sie den Verwaltungsmodus auf "Erweitert" fest.
Geben Sie bei den zulässigen externen Umleitungs-URLs,
appname://easyauth.callbackein. Der App-Name in dieser Zeichenfolge ist das URL-Schema für Ihre mobile Anwendung. Es sollte die normale URL-Spezifikation für ein Protokoll befolgen (nur Buchstaben und Zahlen verwenden und mit einem Buchstaben beginnen). Notieren Sie sich die Zeichenfolge, die Sie auswählen, da Sie ihren mobilen Anwendungscode an mehreren Stellen mit dem URL-Schema anpassen müssen.Klicke auf OK.
Klicken Sie auf Speichern.
Einschränken von Berechtigungen für authentifizierte Benutzer
Standardmäßig können APIs in einem Back-End für Mobile Apps anonym aufgerufen werden. Als Nächstes müssen Sie den Zugriff auf authentifizierte Clients einschränken.
Node.js Back-End (über das Azure-Portal):
Klicken Sie in ihren Einstellungen für mobile Apps auf einfache Tabellen, und wählen Sie Ihre Tabelle aus. Klicken Sie auf Berechtigungen ändern, wählen Sie Authentifizierten Zugriff nur für alle Berechtigungen aus, und klicken Sie dann auf Speichern.
.NET-Back-End (C#):
Navigieren Sie im Serverprojekt zu Controllern>TodoItemController.cs. Fügen Sie das attribut
[Authorize]wie folgt zur TodoItemController Klasse hinzu. Um den Zugriff nur auf bestimmte Methoden einzuschränken, können Sie dieses Attribut auch nur auf diese Methoden anstelle der Klasse anwenden. Veröffentlichen Sie das Serverprojekt erneut.[Authorize] public class TodoItemController : TableController<TodoItem>Node.js Backend (über Node.js Code):
Um die Authentifizierung für den Tabellenzugriff zu erfordern, fügen Sie der Node.js Serverskript die folgende Zeile hinzu:
table.access = 'authenticated';Weitere Informationen finden Sie unter Anleitung: Authentifizierung für den Zugriff auf Tabellen erforderlich machen. Informationen zum Herunterladen des Schnellstartcodeprojekts von Ihrer Website finden Sie unter Anleitung: So laden Sie das Node.js-Backend-Schnellstartcodeprojekt mit Git herunter.
Drücken Sie in Xcode "Ausführen" , um die App zu starten. Eine Ausnahme wird ausgelöst, da die App versucht, als nicht authentifizierter Benutzer auf das Back-End zuzugreifen, aber die TodoItem-Tabelle erfordert jetzt eine Authentifizierung.
Hinzufügen der Authentifizierung zur App
Objective-C:
Öffnen Sie auf Ihrem Mac QSTodoListViewController.m in Xcode, und fügen Sie die folgende Methode hinzu:
- (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]; } }]; }Ändern Sie Google in "microsoftaccount", "twitter", "facebook" oder "windowsazureactivedirectory", wenn Sie Google nicht als Identitätsanbieter verwenden. Wenn Sie Facebook verwenden, müssen Sie Facebook-Domänen in Ihrer App zulassen.
Ersetzen Sie die urlScheme durch einen eindeutigen Namen für Ihre Anwendung. Die urlScheme sollte mit dem URL-Schemaprotokoll übereinstimmen, das Sie im Feld zulässige externe Umleitungs-URLs im Azure-Portal angegeben haben. Die urlScheme wird vom Authentifizierungsrückruf verwendet, um nach Abschluss der Authentifizierungsanforderung zurück zu Ihrer Anwendung zu wechseln.
Ersetzen Sie
[self refresh]inviewDidLoadin QSTodoListViewController.m durch den folgenden Code:[self loginAndGetData];Öffnen Sie die
QSAppDelegate.hDatei, und fügen Sie den folgenden Code hinzu:#import "QSTodoService.h" @property (strong, nonatomic) QSTodoService *qsTodoService;Öffnen Sie die
QSAppDelegate.mDatei, und fügen Sie den folgenden Code hinzu:- (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 stackhinzu. Ersetzen Sie den App-Namen durch den urlScheme-Wert, den Sie in Schritt 1 verwendet haben.Öffnen Sie die
AppName-Info.plistDatei (ersetzen Sie AppName durch den Namen Ihrer App), und fügen Sie den folgenden Code hinzu:<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. Ersetzen Sie die App-Zeichenfolge (innerhalb des Arrays für CFBundleURLSchemes) durch den App-Namen, den Sie in Schritt 1 ausgewählt haben. Sie können diese Änderungen auch im plist-Editor vornehmen – klicken Sie in XCode auf dieAppName-Info.plistDatei, um den plist-Editor zu öffnen.Ersetzen Sie die
com.microsoft.azure.zumoZeichenfolge für CFBundleURLName durch Ihren Apple-Bündelbezeichner.Drücken Sie "Ausführen" , um die App zu starten, und melden Sie sich dann an. Wenn Sie angemeldet sind, sollten Sie in der Lage sein, die Todo-Liste anzuzeigen und Aktualisierungen vorzunehmen.
Swift:
Öffnen Sie auf Ihrem Mac ToDoTableViewController.swift in Xcode, und fügen Sie die folgende Methode hinzu:
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) }Ändern Sie Google in "microsoftaccount", "twitter", "facebook" oder "windowsazureactivedirectory", wenn Sie Google nicht als Identitätsanbieter verwenden. Wenn Sie Facebook verwenden, müssen Sie Facebook-Domänen in Ihrer App auf die Whitelist setzen.
Ersetzen Sie die urlScheme durch einen eindeutigen Namen für Ihre Anwendung. Die urlScheme sollte mit dem URL-Schemaprotokoll übereinstimmen, das Sie im Feld zulässige externe Umleitungs-URLs im Azure-Portal angegeben haben. Die urlScheme wird vom Authentifizierungsrückruf verwendet, um nach Abschluss der Authentifizierungsanforderung zurück zu Ihrer Anwendung zu wechseln.
Entfernen Sie die Zeilen
self.refreshControl?.beginRefreshing()undself.onRefresh(self.refreshControl)am Ende vonviewDidLoad()ToDoTableViewController.swift. Fügen Sie einen Anruf an ihrem Ort hinzuloginAndGetData():loginAndGetData()Öffnen Sie die
AppDelegate.swiftDatei, und fügen Sie die folgende Zeile derAppDelegateKlasse hinzu.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 den App-Namen durch den urlScheme-Wert, den Sie in Schritt 1 verwendet haben.
Öffnen Sie die
AppName-Info.plistDatei (ersetzen Sie AppName durch den Namen Ihrer App), und fügen Sie den folgenden Code hinzu:<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. Ersetzen Sie die App-Zeichenfolge (innerhalb des Arrays für CFBundleURLSchemes) durch den App-Namen, den Sie in Schritt 1 ausgewählt haben. Sie können diese Änderungen auch im plist-Editor vornehmen – klicken Sie in XCode auf dieAppName-Info.plistDatei, um den plist-Editor zu öffnen.Ersetzen Sie die
com.microsoft.azure.zumoZeichenfolge für CFBundleURLName durch Ihren Apple-Bündelbezeichner.Drücken Sie "Ausführen" , um die App zu starten, und melden Sie sich dann an. Wenn Sie angemeldet sind, sollten Sie in der Lage sein, die Todo-Liste anzuzeigen und Aktualisierungen vorzunehmen.
Die App-Dienstauthentifizierung verwendet Apples Inter-App Kommunikation. Weitere Informationen zu diesem Thema finden Sie in der Apple-Dokumentation