Freigeben über


Testen Ihrer geschützten API

Dieses Tutorial ist der letzte Teil einer Reihe, in der Sie lernen, wie Sie eine geschützte Web-API erstellen und testen, die in einem externen Mandanten registriert ist. In Teil 1 dieser Reihe haben Sie eine ASP.NET Core-Web-API erstellt und ihre Endpunkte geschützt. In diesem letzten Schritt registrieren Sie die Daemon-App und testen Ihre API.

In diesem Tutorial lernen Sie Folgendes:

  • Testen einer geschützten Web-API mithilfe einer einfachen Daemon-App, die die Web-API aufruft

Voraussetzungen

Tutorial: Schützen einer in einem externen Mandanten registrierten ASP.NET Core-Web-API

Registrieren der Daemon-App

Die folgenden Schritte zeigen, wie Sie Ihre Daemon-App im Microsoft Entra Admin Center registrieren:

  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 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.

  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.

Erstellen Sie einen geheimen Clientschlüssel für die registrierte Anwendung. Die Anwendung verwendet den geheimen Clientschlüssel beim Anfordern von Token als Identitätsnachweis.

  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 Zertifikate und Geheimnisse aus.
  3. Wählen Sie Neuer geheimer Clientschlüssel.
  4. Geben Sie im Feld Beschreibung eine Beschreibung für das Clientgeheimnis ein (z. B. Ciam-App-Clientgeheimnis).
  5. Wählen Sie unter Gültig bis einen Gültigkeitszeitraum für den geheimen Schlüssel (gemäß den jeweiligen Sicherheitsregeln Ihrer Organisation) und dann Hinzufügen aus.
  6. Notieren Sie den Wert des Geheimnisses. Dieser Wert wird in einem späteren Schritt für die Konfiguration verwendet. Der Wert des Geheimnisses wird nicht noch mal angezeigt und kann nicht anderweitig abgerufen werden, nachdem Sie die Seite Zertifikate & Geheimnisse verlassen haben. Notieren Sie sich diesen daher unbedingt.

Zuweisen der App-Rolle zu Ihrer Daemon-App

Apps, die sich selbst authentifizieren, erfordern App-Berechtigungen.

  1. Wählen Sie auf der Seite Anwendungsregistrierungen die von Ihnen erstellte Anwendung (z. B. ciam-client-app) aus.

  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 die Option Anwendungsberechtigungen aus. Wir wählen diese Option aus, da sich die Anwendung als sie selbst anmeldet, nicht als Benutzer.

  7. Wählen Sie in der Berechtigungsliste TodoList.Read.All, ToDoList.ReadWrite.All 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 die Daemon-App jedoch keine Interaktion mit Benutzerinnen oder Benutzern zulässt, können die Benutzerinnen und Benutzer selbst diesen Berechtigungen nicht zustimmen. Um dieses Problem zu beheben, müssen Sie als Administrator 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 Erteilt für <Name Ihres Mandanten> angezeigt wird.

Schreiben von Code

  1. Initialisieren Sie eine .NET-Konsolen-App und navigieren Sie zum zugehörigen Stammordner.

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Installieren Sie MSAL, um Sie bei der Behandlung der Authentifizierung zu unterstützen, indem Sie den folgenden Befehl ausführen:

    dotnet add package Microsoft.Identity.Client
    
  3. Führen Sie Ihr API-Projekt aus, und notieren Sie sich den Port, an dem es ausgeführt wird.

  4. Öffnen Sie die Datei Program.cs, und ersetzen Sie den Code „Hello world“ durch den folgenden Code.

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var response = await client.GetAsync("https://localhost:<your-api-port>/api/todolist");
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Navigieren Sie zum Stammverzeichnis der Daemon-App, und führen Sie die App mit dem Befehl dotnet run aus. Dieser Code sendet eine Anforderung ohne Zugriffstoken. Die Zeichenfolge Ihre Antwort lautet: Nicht autorisiert sollte auf Ihre Konsole aufgedruckt sein.

  5. Entfernen Sie den Code in Schritt 4, und ersetzen Sie ihn durch Folgendes, um Ihre API zu testen, indem Sie eine Anforderung mit einem gültigen Zugriffstoken senden.

    using Microsoft.Identity.Client;
    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var clientId = "<your-daemon-app-client-id>";
    var clientSecret = "<your-daemon-app-secret>";
    var scopes = new[] {"api://<your-web-api-application-id>/.default"};
    var tenantName= "<your-tenant-name>";
    var authority = $"https://{tenantName}.ciamlogin.com/";
    
    var app = ConfidentialClientApplicationBuilder
        .Create(clientId)
        .WithAuthority(authority)
        .WithClientSecret(clientSecret)
        .Build();
    
    var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    var response = await client.GetAsync("https://localhost:44351/api/todolist");
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Navigieren Sie zum Stammverzeichnis der Daemon-App, und führen Sie die App mit dem Befehl dotnet run aus. Dieser Code sendet eine Anforderung mit einem gültigen Zugriffstoken. Die Zeichenfolge Ihre Antwort lautet: OK sollte auf Ihre Konsole aufgedruckt sein.

Siehe auch

Aktivieren der Self-Service-Kennwortzurücksetzung