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.
Überblick
In diesem Thema erfahren Sie, wie Sie Benutzer einer App Service Mobile-App von Ihrer Clientanwendung authentifizieren. In diesem Lernprogramm fügen Sie dem Schnellstartprojekt "Xamarin.iOS" die Authentifizierung mithilfe eines Identitätsanbieters hinzu, der von App Service unterstützt wird. Nachdem Sie von Ihrer mobilen App erfolgreich authentifiziert und autorisiert wurden, wird der Benutzer-ID-Wert angezeigt, und Sie können auf eingeschränkte Tabellendaten zugreifen.
Sie müssen zuerst das Lernprogramm zum Erstellen einer Xamarin.iOS-App abschließen. Wenn Sie das heruntergeladene Schnellstartserverprojekt nicht verwenden, müssen Sie dem Projekt das Paket für die Authentifizierungserweiterung hinzufügen. Weitere Informationen zu Servererweiterungspaketen finden Sie unter Arbeiten mit dem .NET-Back-End-Server-SDK für Azure Mobile Apps.
Registrieren Sie Ihre App für die Authentifizierung und konfigurieren Sie App-Dienste
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.
Geben Sie bei den zulässigen externen Umleitungs-URLs,
url_scheme_of_your_app://easyauth.callbackein. Die url_scheme_of_your_app 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.
Führen Sie in Visual Studio oder Xamarin Studio das Clientprojekt auf einem Gerät oder Emulator aus. Stellen Sie sicher, dass nach dem Starten der App eine unbehandelte Ausnahme mit dem Statuscode 401 (Nicht autorisiert) ausgelöst wird. Der Fehler wird in der Konsole des Debuggers protokolliert. In Visual Studio sollte also der Fehler im Ausgabefenster angezeigt werden.
Dieser nicht autorisierte Fehler tritt auf, da die App versucht, als nicht authentifizierter Benutzer auf Ihr Mobile App-Back-End zuzugreifen. Die Tabelle "TodoItem " erfordert jetzt eine Authentifizierung.
Als Nächstes aktualisieren Sie die Client-App so, dass Ressourcen aus dem Mobilen App-Back-End mit einem authentifizierten Benutzer angefordert werden.
Hinzufügen der Authentifizierung zur App
In diesem Abschnitt ändern Sie die App so, dass vor dem Anzeigen von Daten ein Anmeldebildschirm angezeigt wird. Wenn die App gestartet wird, stellt sie keine Verbindung mit Ihrem App-Dienst her und zeigt keine Daten an. Nachdem der Benutzer die Aktualisierungsgeste zum ersten Mal ausführt, wird der Anmeldebildschirm angezeigt. Nach erfolgreicher Anmeldung wird die Liste der Aufgaben angezeigt.
Öffnen Sie im Clientprojekt die Datei QSTodoService.cs , und fügen Sie die folgende using-Anweisung und
MobileServiceUsermit Accessor zur QSTodoService-Klasse hinzu:using UIKit; // Logged in user private MobileServiceUser user; public MobileServiceUser User { get { return user; } }Fügen Sie die neue Methode "Authenticate to QSTodoService " mit der folgenden Definition hinzu:
public async Task Authenticate(UIViewController view) { try { AppDelegate.ResumeWithURL = url => url.Scheme == "{url_scheme_of_your_app}" && client.ResumeWithURL(url); user = await client.LoginAsync(view, MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}"); } catch (Exception ex) { Console.Error.WriteLine (@"ERROR - AUTHENTICATION FAILED {0}", ex.Message); } }Hinweis
Wenn Sie einen anderen Identitätsanbieter als facebook verwenden, ändern Sie den oben an LoginAsync übergebenen Wert in einen der folgenden Werte: MicrosoftAccount, Twitter, Google oder WindowsAzureActiveDirectory.
Öffnen Sie QSTodoListViewController.cs. Ändern Sie die Methodendefinition von ViewDidLoad , indem Sie den Aufruf von RefreshAsync() am Ende entfernen:
public override async void ViewDidLoad () { base.ViewDidLoad (); todoService = QSTodoService.DefaultService; await todoService.InitializeStoreAsync(); RefreshControl.ValueChanged += async (sender, e) => { await RefreshAsync(); } // Comment out the call to RefreshAsync // await RefreshAsync(); }Ändern Sie die Methode RefreshAsync so, dass sie authentifiziert wird, wenn die User-Eigenschaft null ist. Fügen Sie oben in der Methodendefinition den folgenden Code hinzu:
// start of RefreshAsync method if (todoService.User == null) { await QSTodoService.DefaultService.Authenticate(this); if (todoService.User == null) { Console.WriteLine("couldn't login!!"); return; } } // rest of RefreshAsync methodÖffnen Sie AppDelegate.cs, fügen Sie die folgende Methode hinzu:
public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options) { if (client.ResumeWithURL(app, url, options)) return true; return base.OpenUrl(app, url, options); }Öffnen Sie die Datei Info.plist, navigieren Sie im Abschnitt "Erweitert" zu URL-Typen. Konfigurieren Sie nun den Bezeichner und die URL-Schemas Ihres URL-Typs, und klicken Sie auf "URL-Typ hinzufügen". URL-Schemas sollten mit Ihrem {url_scheme_of_your_app} identisch sein.
Führen Sie in Visual Studio, verbunden mit Ihrem Mac Host oder Visual Studio für Mac, das Clientprojekt für ein Gerät oder einen Emulator aus. Stellen Sie sicher, dass die App keine Daten anzeigt.
Führen Sie die Aktualisierungsgeste aus, indem Sie die Liste der Elemente nach unten ziehen, wodurch der Anmeldebildschirm angezeigt wird. Nachdem Sie erfolgreich gültige Anmeldeinformationen eingegeben haben, zeigt die App die Aufgabenliste an, und Sie können die Daten aktualisieren.