Authentifizierung und Autorisierung in Azure App Service für mobile Apps

In diesem Artikel wird beschrieben, wie die Authentifizierung und Autorisierung funktioniert, wenn Sie native mobile Apps mit einem App Service-Back-End entwickeln. App Service umfasst eine integrierte Authentifizierung und Autorisierung, und Ihre mobilen Apps können die Anmeldung für Benutzer durchführen, ohne dass in App Service hierfür Code geändert werden muss. Es stellt eine einfache Möglichkeit zum Schutz Ihrer Anwendung und für die Arbeit mit benutzerspezifischen Daten bereit.

Warnung

Dieser Artikel behandelt v4.2.0 des Azure Mobile Apps Client SDK. Die aktuelle Version verwendet einen neuen Authentifizierungsmechanismus und unterstützt nicht Azure-App Dienstauthentifizierung & Autorisierung auf die gleiche Weise.

Informationen zur Funktionsweise der Authentifizierung und Autorisierung in App Service finden Sie unter Authentifizierung und Autorisierung in Azure App Service.

Authentifizierung mit Anbieter-SDK

Nachdem alles in App Service konfiguriert wurde, können Sie mobile Clients für die Anmeldung mit App Service anpassen. Dazu gibt es zwei Ansätze:

  • Verwenden Sie ein von einem bestimmten Identitätsanbieter veröffentlichtes SDK, um zuerst die Identität und anschließend den Zugriff auf App Service einzurichten.
  • Verwenden Sie eine einzelne Codezeile, um Benutzeranmeldungen über das Mobile Apps-Client-SDK zu ermöglichen.

Tipp

Bei den meisten Anwendungen empfiehlt sich die Verwendung eines Anbieter-SDK, um eine möglichst konsistente Benutzeranmeldung zu erhalten. Außerdem profitieren Sie bei dieser Variante von der Unterstützung der Tokenaktualisierung und weiteren Vorteilen des jeweiligen Anbieters.

Bei Verwendung eines Anbieter-SDKs können sich die Benutzer in einer Umgebung anmelden, die stärker in das Betriebssystem eingebunden ist, unter dem die Anwendung ausgeführt wird. Bei diesem Verfahren erhalten Sie außerdem ein Anbietertoken und bestimmte Benutzerinformationen auf dem Client, sodass die Nutzung von Graph-APIs und die Anpassung der Benutzerumgebung wesentlich vereinfacht wird. Diese Methode wird als „Clientflow“ oder „clientgesteuerter Flow“ bezeichnet, da Benutzer von Code auf dem Client angemeldet werden.

Das abgerufene Anbietertoken muss zur Überprüfung an App Service gesendet werden. Azure App Service überprüft das Token. Der Dienst erstellt dann ein neues Token für den Client. Im Mobile Apps-Client-SDK stehen Hilfsmethoden zur Verfügung, um diesen Austausch zu verwalten und das Token automatisch an alle Anforderungen anzufügen, die an das Anwendungs-Back-End gerichtet werden. Sie können auch einen Verweis auf das Anbietertoken speichern.

Hinweis

Einige Plattformen, z. B. Windows (WPF), funktionieren NUR mit einem clientgesteuerten Flow. Andere funktionieren sowohl mit dem Server- als auch mit dem Clientflow gleichermaßen gut. Wenn die Plattform nur mit einem clientgesteuertem Flow funktioniert, wird dies im Schnellstarthandbuch gezeigt.

Weitere Informationen zum Authentifizierungsablauf finden Sie unter Authentication flow (Authentifizierungsablauf).

Authentifizierung ohne Anbieter-SDK

Wenn Sie kein Anbieter-SDK einrichten möchten, können Sie die Anmeldung dem Azure App Service-Handle überlassen. Das Azure Mobile Apps-Client-SDK öffnet eine Webansicht für den Anbieter Ihrer Wahl und meldet den Benutzer an. Diese Methode wird als „Serverflow“ oder „servergesteuerter Flow“ bezeichnet, da der Server den Prozess verwaltet, mit dem der Benutzer angemeldet wird. Das Client-SDK empfängt nie das Anbietertoken.

Übermitteln eines Tokens aus dem clientgesteuerten Flow

Wenn Sie den clientgesteuerten Flow verwenden, müssen Sie zuerst die relevanten Informationen abrufen, die Azure App Service benötigt, um das Token zu überprüfen. In den meisten Fällen ist das Token ein Zugriffstoken. Weitere Informationen finden Sie in der Azure App Service Dokumentation.

Anschließend können Sie das geeignete JSON-Objekt erstellen. Wenn Sie z. B. MSAL für einen clientgesteuerten Flow in .NET in einer WPF-Anwendung verwenden, können Sie den folgenden Code verwenden:

var requestBody = new JObject(new JProperty("access_token", authResult.AccessToken));
var userInfo = await mobileClient.login("aad", requestBody);

Der Textkörper der Anforderung muss den Erwartungen entsprechen, wie in der Dokumentation beschrieben.