Aufrufen einer ASP.NET Core-Web-API mit cURL
In diesem Artikel erfahren Sie, wie Sie eine geschützte ASP.NET Core-Web-API mit Client-URL (cURL) aufrufen. cURL ist ein Befehlszeilentool, mit dem Entwickler Daten an und von einem Server übertragen. In diesem Artikel registrieren Sie eine Web-App und eine Web-API in einem Mandanten. Die Web-App wird verwendet, um ein Zugriffstoken abzurufen, das von der Microsoft Identity Platform generiert wird. Als Nächstes verwenden Sie das Token, um mithilfe von cURL einen autorisierten Aufruf der Web-API zu tätigen.
In diesem Artikel erfahren Sie, wie Sie eine geschützte ASP.NET Core-Web-API mit Client-URL (cURL) aufrufen. cURL ist ein Befehlszeilentool, mit dem Entwickler Daten an und von einem Server übertragen. Nach dem Lernprogramm: Implementieren eines geschützten Endpunkts in Ihrer API, in dem Sie eine geschützte API erstellt haben, müssen Sie eine Web-App bei der Microsoft Identity Platform registrieren, um ein Zugriffstoken zu generieren. Als Nächstes verwenden Sie das Token, um mithilfe von cURL einen autorisierten Aufruf der API zu tätigen.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Dieses Azure-Konto muss über die Berechtigung zum Verwalten von Anwendungen verfügen. Zu den folgenden Microsoft Entra-Rollen gehören die erforderlichen Berechtigungen:
- Anwendungsadministrator
- Anwendungsentwickler
- Cloudanwendungsadministrator
- Laden und installieren Sie cURL auf Ihren Workstation-Computer.
- Mindestanforderung: .NET 8.0 SDK.
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Dieses Azure-Konto muss über die Berechtigung zum Verwalten von Anwendungen verfügen. Zu den folgenden Microsoft Entra-Rollen gehören die erforderlichen Berechtigungen:
- Anwendungsadministrator
- Anwendungsentwickler
- Cloudanwendungsadministrator
- Abschluss der Lernprogrammreihe:
- Laden und installieren Sie cURL auf Ihren Workstation-Computer.
Registrieren einer Anwendung bei Microsoft Identity Platform
Die Microsoft Identity Platform erfordert, dass Ihre Anwendung registriert wird, bevor Identitäts- und Zugriffsverwaltungsdienste bereitgestellt werden können. Mit der Anwendungsregistrierung können Sie den Namen und den Typ der Anwendung und die Anmeldegruppe angeben. Die Anmeldegruppe gibt an, welche Arten von Benutzerkonten sich bei einer bestimmten Anwendung anmelden dürfen.
Registrieren der Web-API
Tipp
Die Schritte in diesem Artikel können je nach Portal, mit dem Sie beginnen, geringfügig variieren.
Führen Sie die folgenden Schritte aus, um die Web-API-Registrierung zu erstellen:
Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsentwickler an.
Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Einstellungen-Symbol im oberen Menü, um zum Mandanten zu wechseln, in dem Sie die Anwendung über das Menü Verzeichnisse + Abonnements registrieren möchten.
Navigieren 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 aus.
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 der 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 gültig ist.
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, wird er im Bereich Eine API verfügbar machen aufgeführt.
Registrieren der Web-App
Eine Web-API ist jedoch nicht ausreichend, da eine Web-App außerdem ein Zugriffstoken für den Zugriff auf die von Ihnen erstellte Web-API benötigt.
Führen Sie die folgenden Schritte aus, um die Web-App-Registrierung zu erstellen:
- Klicken Sie auf Startseite, um zur Startseite zurückzukehren. Navigieren Sie zu Identität>Anwendungen>App-Registrierungen.
- Wählen Sie Neue Registrierung aus.
- Geben Sie einen Namen für die Anwendung ein, z. B.
web-app-calls-web-api
. - Wählen Sie für Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus. Wenn Sie Informationen zu den verschiedenen Kontotypen benötigen, wählen Sie Entscheidungshilfe aus.
- Wählen Sie unter Umleitungs-URI (optional) die Option Web aus und geben Sie
http://localhost
in das URL-Textfeld ein. - Wählen Sie Registrieren aus.
- Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsentwickler an.
- Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Einstellungen-Symbol im oberen Menü, um zum Mandanten zu wechseln, in dem Sie die Anwendung über das Menü Verzeichnisse + Abonnements registrieren möchten.
- Navigieren Sie zu Identität>Anwendungen>App-Registrierungen.
- Wählen Sie Neue Registrierung aus.
- Geben Sie einen Namen für die Anwendung ein, z. B.
web-app-calls-web-api
. - Wählen Sie für Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus. Wenn Sie Informationen zu den verschiedenen Kontotypen benötigen, wählen Sie Entscheidungshilfe aus.
- Wählen Sie unter Umleitungs-URI (optional) die Option Web aus und geben Sie
http://localhost
in das URL-Textfeld ein. - Wählen Sie Registrieren aus.
Wenn die Registrierung abgeschlossen ist, wird die App-Registrierung im Bereich Übersicht angezeigt. Notieren Sie sich die Verzeichnis-ID (Mandant) und die Anwendungs-ID (Client), die in späteren Schritten verwendet werden sollen.
Hinzufügen eines geheimen Clientschlüssels
Ein geheimer Clientschlüssel (manchmal auch als Anwendungspasswort bezeichnet) ist ein Zeichenkettenwert, den Ihre App für die Identifizierung verwenden kann. Die Web-App verwendet den geheimen Clientschlüssel beim Anfordern von Token als Identitätsnachweis.
Führen Sie die folgenden Schritte aus, um einen geheimen Clientschlüssel zu konfigurieren:
Wählen Sie im Bereich Übersicht unter Verwalten die Option Zertifikate & Geheimnisse>Geheime Clientschlüssel>Neuer geheimer Clientschlüssel aus.
Fügen Sie eine Beschreibung für Ihren geheimen Clientschlüssel hinzu, z. B. Mein geheimer Clientschlüssel.
Wählen Sie für das Geheimnis eine Ablauffrist aus, oder geben Sie eine benutzerdefinierte Lebensdauer an.
- Die Lebensdauer eines geheimen Clientschlüssels ist auf maximal zwei Jahre (24 Monate) begrenzt. Das bedeutet, dass keine benutzerdefinierte Lebensdauer angegeben werden kann, die über die 24 Monate hinausgeht.
- Microsoft empfiehlt, den Wert für die Ablauffrist auf maximal 12 Monate festzulegen.
Wählen Sie Hinzufügen.
Notieren Sie sich unbedingt den Wert des geheimen Clientschlüssels. Dieser Geheimniswert kann nach Verlassen dieser Seite nicht erneut angezeigt werden.
Hinzufügen von Anwendungsberechtigungen für den Zugriff auf eine Web-API
Wenn Sie die Bereiche einer Web-API in der Registrierung der Web-App angeben, kann die Web-App ein Zugriffstoken mit diesen Bereichen von der Microsoft Identity Platform abrufen. Innerhalb des Codes kann die Web-API dann berechtigungsbasierten Zugriff auf die zugehörigen Ressourcen basierend auf den im Zugriffstoken enthaltenen Bereichen bereitstellen.
Führen Sie die folgenden Schritte aus, um die Web-App-Berechtigungen für die Web-API zu konfigurieren:
- Wählen Sie im Bereich Übersicht Ihrer Web-App (web-app-that-calls-web-api) unter Verwalten die Option API-Berechtigungen>Berechtigung hinzufügen>Von meiner Organisation verwendeten APIs aus.
- Wählen Sie NewWebAPI1 oder die API aus, der Sie Berechtigungen hinzufügen möchten.
- Aktivieren Sie unter Berechtigungen auswählen das Kontrollkästchen neben Forecast.Read. Möglicherweise müssen Sie die Liste Berechtigung erweitern. Dadurch werden die Berechtigungen ausgewählt, die die Client-App im Namen des angemeldeten Benutzers besitzen soll.
- Wählen Sie Berechtigungen hinzufügen aus, um den Vorgang abzuschließen.
Nachdem Sie Ihrer API diese Berechtigungen hinzugefügt haben, sollten die ausgewählten Berechtigungen unter Konfigurierte Berechtigungen angezeigt werden.
Möglicherweise sehen Sie auch die Berechtigung User.Read für die Microsoft Graph-API. Diese Berechtigung wird automatisch hinzugefügt, wenn Sie eine App registrieren.
Testen der Web-API
Klonen Sie das Repository ms-identity-docs-code-dotnet.
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
Navigieren Sie zum Ordner
ms-identity-docs-code-dotnet/web-api
, öffnen Sie die Datei./appsettings.json
und ersetzen Sie{APPLICATION_CLIENT_ID}
und{DIRECTORY_TENANT_ID}
wie folgt:{APPLICATION_CLIENT_ID}
ist die Anwendungs-ID (Client), die im Bereich Übersicht der Web-API unter App-Registrierungen angezeigt wird.{DIRECTORY_TENANT_ID}
ist die Verzeichnis-ID (Mandant), die im Bereich Übersicht der Web-API unter App-Registrierungen angezeigt wird.
Führen Sie den folgenden Befehl aus, um die App zu starten:
Die Ausgabe sieht in etwa wie folgt aus. Notieren Sie sich die Portnummer in der
https://localhost:{port}
-URL.... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:{port} ...
Testen der Web-API
Navigieren Sie zur Web-API, die im Lernprogramm: Erstellen eines ASP.NET Core-Projekts und Konfigurieren der API erstellt wurde, z. B. NewWebAPILocal, und öffnen Sie den Ordner.
Öffnen Sie ein neues Terminal-Fenster und navigieren Sie zu dem Ordner, in dem sich das WEB-API-Projekt befindet.
Die Ausgabe sieht in etwa wie folgt aus. Notieren Sie sich die Portnummer in der
https://localhost:{port}
-URL.... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:{port} ...
Anfordern eines Autorisierungscodes
Der Autorisierungscodefluss beginnt damit, dass der Client den Benutzer auf den /authorize
-Endpunkt leitet. In dieser Anforderung fordert der Client die Berechtigung Forecast.Read
vom Benutzer an.
https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize?client_id={web-app-calls-web-api_application_client_id}&response_type=code&redirect_uri=http://localhost&response_mode=query&scope=api://{web_API_application_client_id}/Forecast.Read
Kopieren Sie die URL, ersetzen Sie die folgenden Parameter, und fügen Sie sie in Ihren Browser ein:
{tenant_id}
ist die Verzeichnis-ID (Mandant) der Web-App.{web-app-calls-web-api_application_client_id}
ist die Anwendungs-ID (Client) im Bereich Übersicht der Web-App (web-app-calls-web-api).{web_API_application_client_id}
ist die Anwendungs-ID (Client) im Bereich Übersicht der Web-API (NewWebAPI1).
Melden Sie sich als Benutzer bzw. Benutzerin bei dem Microsoft Entra-Mandanten an, in dem die Apps registriert sind. Stimmen Sie allen Zugriffsanforderungen zu, falls erforderlich.
Ihr Browser wird zu
http://localhost/
umgeleitet. Gehen Sie zur Navigationsleiste Ihres Browsers und kopieren Sie den{authorization_code}
, um ihn in den folgenden Schritten zu verwenden. Die URL hat die Form des folgenden Schnipsels:http://localhost/?code={authorization_code}
Verwenden eines Autorisierungscodes und cURL zum Abrufen eines Zugriffstokens
cURL kann jetzt verwendet werden, um ein Zugriffstoken von der Microsoft Identity Platform anzufordern.
Kopieren Sie den URL-Befehl im folgenden Codeschnipsel. Ersetzen Sie die Werte in Klammern durch die folgenden Parameter für Ihr Terminal. Entfernen Sie unbedingt die Klammern:
curl -X POST https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token \ -d 'client_id={web-app-calls-web-api_application_client_id}' \ -d 'api://{web_API_application_client_id}/Forecast.Read' \ -d 'code={authorization_code}&session_state={web-app-calls-web-api_application_client_id}' \ -d 'redirect_uri=http://localhost' \ -d 'grant_type=authorization_code' \ -d 'client_secret={client_secret}'
{tenant_id}
ist die Verzeichnis-ID (Mandant) der Web-App.client_id={web-app-calls-web-api_application_client_id}
undsession_state={web-app-calls-web-api_application_client_id}
ist die Anwendungs-ID (Client) im Bereich Übersicht der Web-App (web-app-calls-web-api).api://{web_API_application_client_id}/Forecast.Read
ist die Anwendungs-ID (Client) im Bereich Übersicht der Web-API (NewWebAPI1).code={authorization_code}
ist der Autorisierungscode, der unter Anfordern eines Autorisierungscodes bereitgestellt wurde. Dadurch kann das cURL-Tool ein Zugriffstoken anfordern.client_secret={client_secret}
ist der Wert des geheimen Clientschlüssels, den Sie sich unter Hinzufügen eines geheimen Clientschlüssels notiert haben.
Führen Sie den cURL-Befehl aus. Wenn Sie ihn richtig eingegeben haben, sollten Sie eine JSON-Antwort ähnlich der folgenden Ausgabe erhalten:
{ "token_type": "Bearer", "scope": "api://{web_API_application_client_id}/Forecast.Read", "expires_in": 3600, "ext_expires_in": 3600, "access_token": "{access_token}" }
Aufrufen der Web-API mit Zugriffstoken
Durch Ausführen des vorherigen cURL-Befehls hat die Microsoft Identity Platform ein Zugriffstoken bereitgestellt. Das erworbene Token kann jetzt als Bearer in einer HTTP-Anforderung zum Aufrufen der Web-API verwendet werden.
Um die Web-API aufzurufen, kopieren Sie den folgenden cURL-Befehl, ersetzen Sie die folgenden Werte in Klammern und fügen Sie ihn in Ihr Terminal ein:
curl -X GET https://localhost:{port}/weatherforecast -ki \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer {access_token}"
{access_token}
ist der Zugriffstokenwert, den Sie aus der JSON-Ausgabe im vorherigen Abschnitt aufgezeichnet haben.{port}
die Portnummer der Web-API, die Sie beim Ausführen der API im Terminal aufgezeichnet haben. Stellen Sie sicher, dass es sich um diehttps
-Portnummer handelt.
Wenn ein gültiges Zugriffstoken in der Anforderung enthalten ist, wird
HTTP/2 200
als erwartete Antwort ähnlich der folgenden Ausgabe ausgegeben:HTTP/2 200 content-type: application/json; charset=utf-8 date: Day, DD Month YYYY HH:MM:SS server: Kestrel [{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":36,"summary":"Hot","temperatureF":96},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":43,"summary":"Warm","temperatureF":109},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":18,"summary":"Warm","temperatureF":64},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":50,"summary":"Chilly","temperatureF":121},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":3,"summary":"Bracing","temperatureF":37}]
Nächste Schritte
Weitere Informationen zum OAuth 2.0-Autorisierungscodeflow und den Anwendungstypen finden Sie unter: