Freigeben über


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

Gilt für:Weißer Kreis mit grauem X-Symbol. Mitarbeitermieter Grüner Kreis mit weißem Häkchen-Symbol. Externe Mieter (weitere Informationen)

In dieser Schnellstartanleitung erfahren Sie, wie Sie eine mobile Beispielanwendung für Android konfigurieren, um eine ASP.NET Core-Web-API aufzurufen.

Voraussetzungen

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 diese 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:

    Eigentum Wert
    Bereichsname ToDoListe.Lesen
    Wer kann zustimmen? Nur Administratoren
    Anzeigename der Administratoreinwilligung ToDo-Liste des Benutzers/der Benutzerin mit „ToDoListApi“ lesen
    Beschreibung der Zustimmung des Administrators Geben Sie der App Lesezugriff auf die ToDo-Liste des Benutzers/der Benutzerin mithilfe von „ToDoListApi“.
    Staat Aktiviert
  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:

    Eigentum Wert
    Bereichsname ToDoList.ReadWrite
    Wer kann zustimmen? Nur Administratoren
    Anzeigename der Administratoreinwilligung ToDo-Liste des Benutzers mit der „ToDoListApi“ lesen und schreiben
    Beschreibung der Zustimmung des Administrators Erlauben Sie der App das Lesen und Schreiben der ToDo-Liste des Benutzers mit Hilfe der „ToDoListApi“.
    Staat Aktiviert

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 App-Rolle oder Anwendungsberechtigung veröffentlichen, damit die Client-Apps ein Zugriffstoken für sich selbst 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:

    Eigentum Wert
    Anzeigename ToDoListe.Lesen.Alle
    Zulässige Mitgliedstypen Anwendungen
    Wert ToDoListe.Lesen.Alle
    BESCHREIBUNG Geben Sie der App Lesezugriff auf die ToDo-Liste aller Benutzer*innen mithilfe von „ToDoListApi“.
    Möchten Sie diese App-Rolle aktivieren? Aktiviert lassen
  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:

    Eigentum Wert
    Anzeigename 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“.
    Möchten Sie diese App-Rolle aktivieren? Aktiviert lassen

Konfigurieren optionaler Ansprüche

Sie können den optionalen idtyp-Anspruch hinzufügen, damit die Web-API ermitteln kann, ob es sich bei einem Token um ein App-Token oder ein App + Benutzer-Token handelt. Obwohl Sie eine Kombination aus Scp - und Rollenansprüchen für denselben Zweck verwenden können, ist die Verwendung des idtyp-Anspruchs die einfachste Möglichkeit, ein App-Token und ein App + Benutzertoken voneinander 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 ihre Seite Übersicht zu öffnen.

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

  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 Consumer-Benutzer diesen Berechtigungen nicht selbst zustimmen. Um dies zu beheben, müssen Sie als Administrator diesen Berechtigungen im Namen aller Benutzer im Mandanten 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 < der Status Erteilt 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 einer Beispielweb-API

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

  • Um das Beispiel zu klonen, öffnen Sie eine Eingabeaufforderung, und 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
    
  • Laden Sie die .zip Dateiherunter. Extrahieren Sie ihn in einen Dateipfad, in dem die Länge des Namens weniger als 260 Zeichen beträgt.

Konfigurieren und Ausführen der Beispielweb-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 Platzhalter:

    • Enter_the_Application_Id_Here und ersetzen Sie sie durch die Anwendungs-ID (Client-ID) der Web-API, die Sie zuvor kopiert haben.
    • Enter_the_Tenant_Id_Here, und ersetzen Sie den Wert durch die Verzeichnis-ID (Mandant), die Sie zuvor kopiert haben.
    • Enter_the_Tenant_Subdomain_Here und ersetzen Sie es durch die Verzeichnis-(Mandanten-)Unterdomäne. Wenn Ihre primäre Mandantendomäne z. B. contoso.onmicrosoft.comist, verwenden Sie contoso. Wenn Sie Ihren Mandantennamen nicht kennen, lesen Sie die Informationen unter Abrufen der Details des Mandanten.

Sie müssen Ihre Web-API für die Android-Beispiel-App hosten, um sie aufzurufen. Folgen Sie der Schnellstartanleitung: Stellen Sie eine ASP.NET Web-App bereit, um Ihre Web-API bereitzustellen.

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

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

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

  2. Suchen Sie die Eigenschaft mit dem Namen WEB_API_URL_1 und stellen Sie die URL auf Ihre Web-API ein.

    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 einer 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 Ihre App im Menü "Konfigurationen ausführen" 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 zu verbinden.

  3. Wählen Sie die Schaltfläche "Ausführen " aus. Die App öffnet sich auf dem E-Mail- und Einmalpasscode-Bildschirm.

  4. Wählen Sie die Registerkarte "API" aus, um den API-Aufruf zu testen. Ein erfolgreicher Aufruf der Web-API gibt HTTP 200zurück, während HTTP 403 nicht autorisierten Zugriff angibt.

Nächste Schritte