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
- Azure-Konto mit einem aktiven Abonnement Erstellen Sie ein kostenloses Konto, falls Sie noch keines besitzen.
- Mindestanforderung: .NET 8.0 SDK
- Visual Studio 2022 oder Visual Studio Code
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.
Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsentwickler an.
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.
Browsen Sie zu Identität>Anwendungen>App-Registrierungen.
Wählen Sie Neue Registrierung aus.
Geben Sie einen Namen für die Anwendung ein, z. B. NewWebAPI1.
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.
Wählen Sie Registrieren.
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.
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.
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:- Geben Sie access_as_user als
Forecast.Read
ein. - Stellen Sie sicher, dass unter Zum Einwilligen berechtigte Personen die Option Administratoren und Benutzer ausgewählt ist.
- Geben Sie
Read forecast data
im Feld Anzeigename der Administratorzustimmung ein. - Geben Sie
Allows the application to read weather forecast data
im Feld Beschreibung der Administratorzustimmung ein. - Geben Sie
Read forecast data
im Feld Anzeigename der Benutzereinwilligung ein. - Geben Sie
Allows the application to read weather forecast data
im Feld Beschreibung der Benutzereinwilligung ein. - Stellen Sie sicher, dass Status auf Aktiviert eingestellt ist.
- Geben Sie access_as_user als
Wählen Sie Bereich hinzufügen aus. Wenn der Bereich ordnungsgemäß eingegeben wurde, ist er unter Eine API verfügbar machen aufgeführt.
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
Öffnen Sie in Ihrer IDE den Projektordner ms-identity-docs-code-dotnet\web-api, der das Beispiel enthält.
Ö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ührungszeichenvalue
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ührungszeichenvalue
durch den Wert der Verzeichnis-ID (Mandanten-ID), die zuvor auf der Seite Übersicht der registrierten Anwendung aufgezeichnet wurde.
Ausführen der Beispielanwendung
Führen Sie den folgenden Befehl aus, um die App zu starten:
dotnet run
Die Ausgabe sieht in etwa wie folgt aus:
... info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:{port} ...
Notieren Sie sich die Portnummer in der
http://localhost:{port}
-URL.Um zu überprüfen, ob der Endpunkt geschützt ist, aktualisieren Sie die Basis-URL im folgenden cURL-Befehl so, dass sie mit derjenigen übereinstimmt, die Sie im vorherigen Schritt erhalten haben, und führen Sie den Befehl dann aus:
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
Nächste Schritte
Fahren Sie mit dem nächsten Artikel fort, um zu erfahren, wie Sie die geschützte Web-API mit cURL aufrufen.