Schnellstart: Schützen einer ASP.NET Core-Web-API mit Microsoft Identity Platform

In dieser Schnellstartanleitung wird ein Codebeispiel für die ASP.NET Core-Web-API verwendet, um zu veranschaulichen, wie der Ressourcenzugriff auf autorisierte Konten eingeschränkt wird. Im Beispiel wird die ASP.NET Core-Identität verwendet, die mit der Microsoft-Authentifizierungsbibliothek (MSAL) interagiert, um die Authentifizierung zu verarbeiten.

Voraussetzungen

Registrieren der Anwendung und der Datensatzbezeichner

Tipp

Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.

Um die Registrierung abzuschließen, geben Sie der Anwendung einen Namen an, und geben Sie die unterstützten Kontotypen an. Nach der Registrierung zeigt die Seite Übersicht der Anwendung die im Quellcode der Anwendung erforderlichen Bezeichner an.

  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 Symbol für Einstellungen im oberen Menü, um zum Mandanten zu wechseln, in dem Sie die Anwendung über das Menü Verzeichnisse + Abonnements registrieren möchten.

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

  4. Wählen Sie Neue Registrierung aus.

  5. Geben Sie einen Namen für die Anwendung ein, z. B. NewWebAPI1.

  6. Wählen Sie für Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus. Wenn Sie Informationen zu den verschiedenen Kontotypen wünschen, wählen Sie Entscheidungshilfe aus.

  7. Wählen Sie Registrieren.

    Screenshot: Eingeben eines Namens und Auswählen des Kontotyps

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

    Screenshot: Bezeichnerwerte auf der Übersichtsseite

Hinweis

Die unterstützten Kontotypen können geändert werden (sieheÄndern der von einer Anwendung unterstützten Konten).

Verfügbarmachen einer API

Nachdem die API registriert wurde, können Sie ihre Berechtigung konfigurieren, indem Sie die Bereiche definieren, die die API für Clientanwendungen verfügbar macht. Clientanwendungen fordern die Berechtigung zum Ausführen von Vorgängen an, indem ein Zugriffstoken zusammen mit seinen Anforderungen an die geschützte Web-API übergeben wird. Die Web-API führt anschließend den angeforderten Vorgang nur dann aus, wenn das empfangene Zugriffstoken die erforderlichen Bereiche enthält.

  1. Wählen Sie unter Verwalten die Optionen Eine API verfügbar machen > Bereich hinzufügen aus. Übernehmen Sie den vorgeschlagenen Anwendungs-ID-URI(api://{clientId}), indem Sie Speichern und fortfahren auswählen. {clientId} ist der Wert, den Sie auf der Seite Übersicht aufgezeichnet haben. Geben Sie anschließend die folgenden Informationen ein:

    1. Geben Sie access_as_user als Forecast.Read ein.
    2. Stellen Sie sicher, dass unter Zum Einwilligen berechtigte Personen die Option Administratoren und Benutzer ausgewählt ist.
    3. Geben Sie Read forecast data im Feld Anzeigename der Administratorzustimmung ein.
    4. Geben Sie Allows the application to read weather forecast data im Feld Beschreibung der Administratorzustimmung ein.
    5. Geben Sie Read forecast data im Feld Anzeigename der Benutzereinwilligung ein.
    6. Geben Sie Allows the application to read weather forecast data im Feld Beschreibung der Benutzereinwilligung ein.
    7. Stellen Sie sicher, dass Status auf Aktiviert eingestellt ist.
  2. Wählen Sie Bereich hinzufügen aus. Wenn der Bereich ordnungsgemäß eingegeben wurde, ist er unter Eine API verfügbar machen aufgeführt.

    Screenshot: Feldwerte beim Hinzufügen des Bereichs zu einer API

Klonen oder Herunterladen der Beispielanwendung

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-docs-code-dotnet.git
    
  • ZIP-Datei herunterladen. Extrahieren Sie sie an einem Dateipfad, dessen Name weniger als 260 Zeichen umfasst.

Konfigurieren der ASP.NET Core-Beispielanwendung

  1. Öffnen Sie in Ihrer IDE den Projektordner ms-identity-docs-code-dotnet\web-api, der das Beispiel enthält.

  2. Öffnen Sie die Datei appsettings.json, die den folgenden Codeschnipsel enthält:

    {
      "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center",
        "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center",
        "Scopes": "Forecast.Read"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    

    Suchen Sie nach folgendem key-Element:

    • ClientId – Der Bezeichner der Anwendung, auch als Client bezeichnet. Ersetzen Sie den Text in Anführungszeichen value durch den Wert der Anwendungs-ID (Client-ID), die zuvor auf der Seite Übersicht der registrierten Anwendung aufgezeichnet wurde.
    • TenantId – Der Bezeichner des Mandanten, in dem die Anwendung registriert ist. Ersetzen Sie den Text in Anführungszeichen value durch den Wert der Verzeichnis-ID (Mandanten-ID), die zuvor auf der Seite Übersicht der registrierten Anwendung aufgezeichnet wurde.

Ausführen der Beispielanwendung

  1. Führen Sie den folgenden Befehl aus, um die App zu starten:

    dotnet run
    
  2. Die Ausgabe sieht in etwa wie folgt aus:

    ...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:{port}
    ...
    

    Notieren Sie sich die Portnummer in der https://localhost:{port}-URL.

  3. Um zu überprüfen, ob der Endpunkt geschützt ist, verwenden Sie den folgenden cURL-Befehl in Bash, um eine nicht authentifizierte HTTP GET-Anforderung in Bash zu senden:

    curl -X GET https://localhost:5001/weatherforecast -ki
    

    Die erwartete Antwort lautet „401 Unauthorized“ und die Ausgabe sieht in etwa wie folgt aus:

    user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki
    HTTP/2 401
    date: Fri, 23 Sep 2023 23:34:24 GMT
    server: Kestrel
    www-authenticate: Bearer
    content-length: 0