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 mobilen App von Ihrer Clientanwendung authentifizieren. In diesem Lernprogramm fügen Sie dem Schnellstartprojekt die Authentifizierung mithilfe eines Identitätsanbieters hinzu, der von Azure Mobile Apps unterstützt wird. Nachdem der Benutzer erfolgreich in der mobilen App authentifiziert und autorisiert ist, wird der Wert der Benutzer-ID angezeigt.
Dieses Lernprogramm basiert auf der Schnellstartanleitung für mobile Apps. Sie müssen auch zuerst das Lernprogramm erstellen eine Xamarin.Android-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-Portal] Ihren 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. Dies geschieht, weil 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
Die App wird aktualisiert, damit Benutzer auf die Schaltfläche " Anmelden " tippen und sich authentifizieren müssen, bevor Daten angezeigt werden.
Fügen Sie der TodoActivity-Klasse den folgenden Code hinzu:
// Define an authenticated user. private MobileServiceUser user; private async Task<bool> Authenticate() { var success = false; try { // Sign in with Facebook login using a server-managed flow. user = await client.LoginAsync(this, MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}"); CreateAndShowDialog(string.Format("you are now logged in - {0}", user.UserId), "Logged in!"); success = true; } catch (Exception ex) { CreateAndShowDialog(ex, "Authentication failed"); } return success; } [Java.Interop.Export()] public async void LoginUser(View view) { // Load data only after authentication succeeds. if (await Authenticate()) { //Hide the button after authentication succeeds. FindViewById<Button>(Resource.Id.buttonLoginUser).Visibility = ViewStates.Gone; // Load the data. OnRefreshItemsSelected(); } } public override void OnResume() { base.OnResume(); Xamarin.Essentials.Platform.OnResume(); }Dadurch wird eine neue Methode zum Authentifizieren eines Benutzers und eines Methodenhandlers für eine neue Anmeldeschaltfläche erstellt. Der Benutzer im obigen Beispielcode wird mithilfe einer Facebook-Anmeldung authentifiziert. Ein Dialogfeld wird verwendet, um die Benutzer-ID nach der Authentifizierung anzuzeigen.
Hinweis
Wenn Sie einen anderen Identitätsanbieter als Facebook verwenden, ändern Sie den oben an LoginAsync übergebenen Wert in einen der folgenden: MicrosoftAccount, Twitter, Google oder WindowsAzureActiveDirectory.
Löschen oder kommentieren Sie in der OnCreate-Methode die folgende Codezeile:
OnRefreshItemsSelected ();Fügen Sie in der Datei Activity_To_Do.axml die folgende LoginUser-Schaltflächendefinition vor der vorhandenen AddItem-Schaltfläche hinzu:
<Button android:id="@+id/buttonLoginUser" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="LoginUser" android:text="@string/login_button_text" />Fügen Sie der Ressourcendatei Strings.xml das folgende Element hinzu:
<string name="login_button_text">Sign in</string>Öffnen Sie die datei AndroidManifest.xml, fügen Sie den folgenden Code innerhalb des
<application>XML-Elements hinzu:<activity android:name="com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity" android:launchMode="singleTop" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="{url_scheme_of_your_app}" android:host="easyauth.callback" /> </intent-filter> </activity>Führen Sie in Visual Studio oder Xamarin Studio das Clientprojekt auf einem Gerät oder Emulator aus, und melden Sie sich mit Ihrem ausgewählten Identitätsanbieter an. Wenn Sie erfolgreich angemeldet sind, zeigt die App Ihre Anmelde-ID und die Liste der Aufgabenelemente an, und Sie können die Daten aktualisieren.
Problembehandlung
Die Anwendung ist aufgrund Java.Lang.NoSuchMethodError: No static method startActivity abgestürzt
In einigen Fällen werden Konflikte in den Supportpaketen im Visual Studio nur als Warnung angezeigt, jedoch stürzt die Anwendung bei der Laufzeit aufgrund dieser Ausnahme ab. In diesem Fall müssen Sie sicherstellen, dass alle Supportpakete, auf die in Ihrem Projekt verwiesen wird, über dieselbe Version verfügen. Das Azure Mobile Apps NuGet-Paket verfügt über Xamarin.Android.Support.CustomTabs Abhängigkeit für Android-Plattform. Wenn Ihr Projekt also neuere Supportpakete verwendet, müssen Sie dieses Paket mit der erforderlichen Version direkt installieren, um Konflikte zu vermeiden.