Freigeben über


Anmelden von Benutzern und Aufrufen einer API in einer mobilen Android-Beispiel-App mithilfe der nativen Authentifizierung

In diesem Artikel wird veranschaulicht, wie Sie eine mobile Android-Beispielanwendung konfigurieren, um eine Web-API von ASP.NET Core aufzurufen.

Voraussetzungen

Registrieren einer Web-API-Anwendung

  1. Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsentwickler an.

  2. Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Einstellungen-Symbol im oberen Menü, um über das Menü Verzeichnisse + Abonnements zu Ihrem externen Mandanten zu wechseln.

  3. Navigieren Sie zu Identität>Anwendungen>App-Registrierungen.

  4. Wählen Sie + Neue Registrierung aus.

  5. Geben Sie auf der daraufhin angezeigten Seite Anwendung registrieren die Registrierungsinformationen Ihrer Anwendung ein:

    1. Geben Sie im Abschnitt „Name“ einen aussagekräftigen Anwendungsnamen ein, der den Benutzerinnen bzw. Benutzern der Anwendung angezeigt werden soll (beispielsweise ciam-client-app).

    2. Wählen Sie unter Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus.

  6. Wählen Sie Registrieren aus, um die Anwendung zu erstellen.

  7. Der Bereich Übersicht der Anwendung wird angezeigt, wenn die Registrierung abgeschlossen ist. Notieren Sie sich die Verzeichnis-ID (Mandant) und die Anwendungs-ID (Client), die im Quellcode Ihrer Anwendung verwendet werden sollen.

Konfigurieren von API-Bereichen

Eine API muss mindestens einen Bereich (auch Delegierte Berechtigung genannt) veröffentlichen, damit die Clientanwendungen erfolgreich ein Zugriffstoken für einen Benutzer abrufen können. Führen Sie die folgenden Schritte aus, um einen Bereich zu veröffentlichen:

  1. Wählen Sie auf der Seite App-Registrierungen die von Ihnen erstellte API-Anwendung (ciam-ToDoList-api) aus, um ihre Seite Übersicht zu öffnen.

  2. Wählen Sie unter Verwalten die Option Eine API verfügbar machen aus.

  3. Wählen Sie oben auf der Seite neben Anwendungs-ID-URI den Link Hinzufügen aus, um einen für diese Anwendung eindeutigen URI zu generieren.

  4. Akzeptieren Sie den vorgeschlagenen Anwendungs-ID-URI, z. B. api://{clientId}, und wählen Sie Speichern aus. Wenn Ihre Webanwendung ein Zugriffstoken für die Web-API anfordert, fügt sie diesen URI als Präfix für jeden Bereich hinzu, den Sie für die API definieren.

  5. Wählen Sie unter Durch diese API definierte Bereiche die Option Bereich hinzufügen aus.

  6. Geben Sie die folgenden Werte ein, die Lesezugriff auf die API definieren, und wählen Sie dann Bereich hinzufügen aus, um Ihre Änderungen zu speichern:

    Eigenschaft Wert
    Bereichsname ToDoList.Read
    Zum Einwilligen berechtigte Personen Nur Administratoren
    Anzeigename der Administratoreinwilligung ToDo-Liste des Benutzers/der Benutzerin mit „ToDoListApi“ lesen
    Beschreibung der Administratoreinwilligung Geben Sie der App Lesezugriff auf die ToDo-Liste des Benutzers/der Benutzerin mithilfe von „ToDoListApi“.
    Zustand Enabled
  7. Wählen Sie erneut Bereich hinzufügen aus, und geben Sie die folgenden Werte ein, die einen Bereich für Lese- und Schreibzugriff auf die API definieren. Klicken Sie auf Bereich hinzufügen, um Ihre Änderungen zu speichern:

    Eigenschaft Wert
    Bereichsname ToDoList.ReadWrite
    Zum Einwilligen berechtigte Personen Nur Administratoren
    Anzeigename der Administratoreinwilligung ToDo-Liste des Benutzers mit der „ToDoListApi“ lesen und schreiben
    Beschreibung der Administratoreinwilligung Erlauben Sie der App das Lesen und Schreiben der ToDo-Liste des Benutzers mit Hilfe der „ToDoListApi“.
    Zustand Aktiviert
  8. Wählen Sie unter Verwalten die Option Manifest aus, um den API-Manifest-Editor zu öffnen.

  9. Legen Sie die Eigenschaft accessTokenAcceptedVersion auf 2 fest.

  10. Wählen Sie Speichern aus.

Erfahren Sie mehr über das Prinzip der geringsten Rechte beim Veröffentlichen von Berechtigungen für eine Web-API.

Konfigurieren von App-Rollen

Eine API muss mindestens eine Anwendungsrolle für Anwendungen veröffentlichen, die auch als Anwendungsberechtigung bezeichnet wird, damit die Clientanwendungen selbst ein Zugriffstoken erhalten können. Anwendungsberechtigungen sind der Typ von Berechtigungen, die APIs veröffentlichen sollten, wenn sie Clientanwendungen eine erfolgreiche Authentifizierung als sie selbst ermöglichen wollen und keine Benutzerinnen bzw. Benutzer anmelden müssen. Befolgen Sie die folgenden Schritte, um eine Anwendungsberechtigung zu veröffentlichen:

  1. Wählen Sie auf der Seite App-Registrierungen die von Ihnen erstellte Anwendung (z. B. ciam-ToDoList-api) aus, um ihre Seite Übersicht zu öffnen.

  2. Wählen Sie unter Verwalten die Option Anwendungsrollen aus.

  3. Wählen Sie App-Rolle erstellen aus, und geben Sie die folgenden Werte ein. Wählen Sie dann Anwenden aus, um Ihre Änderungen zu speichern:

    Eigenschaft Wert
    `Display name` ToDoList.Read.All
    Zulässige Mitgliedstypen Anwendungen
    Wert ToDoList.Read.All
    BESCHREIBUNG Geben Sie der App Lesezugriff auf die ToDo-Liste aller Benutzer*innen mithilfe von „ToDoListApi“.
  4. Wählen Sie erneut App-Rolle erstellen aus, und geben Sie die folgenden Werte für die zweite App-Rolle ein. Wählen Sie dann Anwenden aus, um Ihre Änderungen zu speichern:

    Eigenschaft Wert
    `Display name` ToDoList.ReadWrite.All
    Zulässige Mitgliedstypen Anwendungen
    Wert ToDoList.ReadWrite.All
    BESCHREIBUNG Geben Sie der App Lese- und Schreibzugriff auf die ToDo-Liste eines jeden Benutzers mit Hilfe der „ToDoListApi“.

Konfigurieren optionaler Ansprüche

Fügen Sie den optionalen Anspruch idtyp ein, damit die Web-API besser ermitteln kann, ob ein Token ein App-Token oder ein App- und Benutzertoken ist. Für den gleichen Zweck kann zwar auch eine Kombination aus Ansprüchen vom Typ scp und roles verwendet werden, die Verwendung des Anspruchs idtyp ist jedoch die einfachste Möglichkeit, um App-Token von App- und Benutzertoken zu unterscheiden. Der Wert dieses Anspruchs ist beispielsweise app, wenn das Token ein reines App-Token ist.

Erteilen von API-Berechtigungen für die Android-Beispiel-App

Nachdem Sie sowohl die Client-App als auch die Web-API registriert und die API durch das Erstellen von Bereichen verfügbar gemacht haben, können Sie die Berechtigungen der Client-App für die API konfigurieren, indem Sie die folgenden Schritte ausführen:

  1. Wählen Sie auf der Seite App-Registrierungen die von Ihnen erstellte Anwendung (z. B. ciam-client-app) aus, um die Seite Übersicht zu öffnen.

  2. Wählen Sie unter Verwalten die Option API-Berechtigungen.

  3. Wählen Sie unter Konfigurierte Berechtigungen die Option Berechtigung hinzufügen aus.

  4. Wählen Sie die Registerkarte Von meiner Organisation verwendete APIs aus.

  5. Wählen Sie in der Liste der APIs die API aus, z. B. ciam-ToDoList-api.

  6. Wählen Sie Delegierte Berechtigungen aus.

  7. Wählen Sie in der Berechtigungsliste ToDoList.Read, ToDoList.ReadWrite aus (verwenden Sie bei Bedarf das Suchfeld).

  8. Wählen Sie die Schaltfläche Berechtigungen hinzufügen aus.

  9. An diesem Punkt haben Sie die Berechtigungen ordnungsgemäß zugewiesen. Da der Mandant jedoch der Mandant eines Kunden ist, können die Consumer-Benutzer selbst diesen Berechtigungen nicht zustimmen. Zum Beheben dieses Problems müssen Sie unter einem Administratorkonto im Namen aller Benutzer im Mandanten diesen Berechtigungen zustimmen:

    1. Wählen Sie Administratorzustimmung für <Name Ihres Mandanten> erteilen und dann Ja aus.

    2. Wählen Sie Aktualisieren aus, und vergewissern Sie sich, dass für beide Berechtigungen unter Status der Status Gewährt für <Name Ihres Mandanten> angezeigt wird.

  10. Wählen Sie in der Liste Konfigurierte Berechtigungen die Berechtigungen ToDoList.Read und ToDoList.ReadWrite nacheinander aus, und kopieren Sie dann den vollständigen URI der Berechtigung zur späteren Verwendung. Der vollständige Berechtigungs-URI ähnelt api://{clientId}/{ToDoList.Read} oder api://{clientId}/{ToDoList.ReadWrite}.

Klonen oder Herunterladen der Beispiel-Web-API

Um die Beispielanwendung zu erhalten, können Sie sie entweder von GitHub klonen oder als ZIP-Datei herunterladen.

  • Öffnen Sie zum Klonen des Beispiels eine Eingabeaufforderung, navigieren Sie zu der Stelle, an der Sie das Projekt erstellen möchten, und geben Sie den folgenden Befehl ein:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
    
  • ZIP-Datei herunterladen. Extrahieren Sie sie an einem Dateipfad, dessen Name weniger als 260 Zeichen umfasst.

Konfigurieren und Ausführen der Beispiel-Web-API

  1. Öffnen Sie die 2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json-Datei in Ihrem Code-Editor.

  2. Suchen Sie den folgenden Platzhalter:

    • Enter_the_Application_Id_Here, und ersetzen Sie den Wert durch die Anwendungs-ID (Client) der zuvor von Ihnen kopierten Web-API.
    • Enter_the_Tenant_Id_Here, und ersetzen Sie den Wert durch die Verzeichnis-ID (Mandanten), die Sie zuvor kopiert haben.
    • Enter_the_Tenant_Subdomain_Here, und ersetzen Sie ihn durch die Unterdomäne des Verzeichnisses (des Mandanten). Wenn Ihre primäre Mandantendomäne beispielsweise contoso.onmicrosoft.com lautet, verwenden Sie contoso. Wenn Sie ihren Mandantennamen nicht kennen, können Sie Ihre Mandantendetails auslesen.

Sie müssen Ihre Web-API für die Android-Beispiel-App hosten, um sie aufzurufen. Befolgen Sie die Anweisungen unter Schnellstart: Bereitstellen einer ASP.NET-Web-App, um die Web-API bereitzustellen.

Konfigurieren der mobilen Android-Beispiel-App zum Aufrufen der Web-API

Mit dem Beispiel können Sie mehrere Web-API-URL-Endpunkte und Bereiche konfigurieren. In diesem Fall konfigurieren Sie nur einen Web-API-URL-Endpunkt und die zugehörigen Bereiche.

  1. Öffnen Sie in Android Studio die Datei /app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt.

  2. Suchen Sie die Eigenschaft namens WEB_API_URL_1, und legen Sie die URL auf Ihre Web-API fest.

    private const val WEB_API_URL_1 = "" // Developers should set the respective URL of their web API here
    
  3. Suchen Sie die Eigenschaft namens scopesForAPI1, und legen Sie die Bereiche fest, die in Erteilen von API-Berechtigungen für die Android-Beispiel-App angegeben sind.

    private val scopesForAPI1 = listOf<String>() // Developers should set the respective scopes of their web API here. For example, private val scopes = listOf<String>("api://{clientId}/{ToDoList.Read}", "api://{clientId}/{ToDoList.ReadWrite}")
    

Ausführen der Android-Beispiel-App und Aufrufen der Web-API

Führen Sie die folgenden Schritte aus, um Ihre App zu erstellen und auszuführen:

  1. Wählen Sie in der Symbolleiste im Menü „Konfigurationen ausführen“ Ihre App aus.

  2. Wählen Sie im Zielgerätemenü das Gerät aus, auf dem Sie Ihre App ausführen möchten.

    Wenn keine Geräte konfiguriert sind, müssen Sie entweder ein virtuelles Android-Gerät erstellen, um den Android-Emulator zu verwenden, oder ein physisches Gerät verbinden.

  3. Wählen Sie die Schaltfläche Ausführen aus. Die App wird auf dem Bildschirm mit der E-Mail und dem Einmal-Passcode geöffnet.

  4. Klicken Sie auf die Registerkarte „API“, um den API-Aufruf zu testen. Ein erfolgreicher Aufruf der Web-API gibt HTTP 200 zurück, während HTTP 403 einen nicht autorisierten Zugriff kennzeichnet.

Nächste Schritte