Übung: Erstellen von Abonnements in Azure API Management

Abgeschlossen

Zum Erstellen von Abonnements und zum Abrufen von Abonnementschlüsseln für Client-Apps können Sie die Azure API Management-Benutzeroberfläche im Azure-Portal verwenden.

Angenommen, Ihr Unternehmen möchte seine meteorologischen Daten Clients zur Verfügung stellen, die den Dienst abonnieren und dafür bezahlen. Die entscheidende Anforderung besteht darin, nur Clients Zugriff zu gewähren, denen ein Schlüssel zugeordnet wurde. Als leitender Entwickler sind Sie dafür zuständig, ein API-Gateway zu erstellen. Über das Gateway veröffentlichen Sie eine RESTful-Wetter-API, die einen OpenAPI-Endpunkt verfügbar macht. Anschließend sichern Sie den Endpunkt und ordnen einen Clientschlüssel zu.

In dieser Lerneinheit lernen Sie Folgendes:

  • Veröffentlichen einer RESTful-Wetter-API
  • Bereitstellen eines API Management-Gateways
  • Bereitstellen der Wetter-API über den Gatewayendpunkt
  • Einschränken des Zugriffs über einen Abonnementschlüssel

Wichtig

Sie benötigen für diese Übung ein eigenes Azure-Abonnement. Außerdem fallen möglicherweise Gebühren für Sie an. Wenn Sie noch kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Bereitstellen der Wetter-Web-API

Sie haben eine .NET Core-App entwickelt, die Wetterinformationen zurückgibt. Die App nutzt Swashbuckle, um eine OpenAPI-Dokumentation zu erstellen.

Führen Sie zunächst ein Skript aus, das die API in Azure hostet, um Zeit zu sparen. Das Skript führt die folgenden Schritte aus:

  • Erstellen eines Azure App Service-Plans im Free-Tarif
  • Erstellen einer Web-API in Azure App Service, die für die Git-Bereitstellung über ein lokales Repository konfiguriert ist
  • Festlegen von Anmeldeinformationen für die Bereitstellung auf Kontoebene für die App
  • Lokales Konfigurieren von Git
  • Bereitstellen der Web-API für die App Service-Instanz
  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie in der Azure-Taskleiste das Cloud Shell-Symbol aus, um Azure Cloud Shell zu öffnen.

    Screenshot of Cloud Shell icon in taskbar.

  3. Führen Sie den folgenden „git clone“-Befehl in Azure Cloud Shell aus, um das Repository, das die Quelle für die App enthält, sowie das Einrichtungsskript aus GitHub zu klonen.

    git clone https://github.com/MicrosoftDocs/mslearn-control-authentication-with-apim.git
    
  4. Wechseln Sie lokal zum Verzeichnis des Repositoryordners, indem Sie den folgenden „cd“-Befehl ausführen.

    cd mslearn-control-authentication-with-apim
    
  5. Führen Sie das Skript setup.sh aus, um die API zu erstellen. Dadurch wird eine öffentliche Web-App erstellt, die eine OpenAPI-Schnittstelle verfügbar macht.

    bash setup.sh
    

    Das Skript besteht aus sieben Teilen und seine Ausführung dauert etwa eine Minute. Beachten Sie, dass während der Bereitstellung alle Abhängigkeiten, die für das Ausführen Ihrer App erforderlich sind, automatisch für die App Service-Remoteinstanz installiert werden.

    Nach Abschluss des Skripts werden zwei URLS, eine Swagger-URL und eine Beispiel-URL, ausgegeben. Sie können diese URLs verwenden, um die App-Bereitstellung zu testen.

  6. Um zu testen, ob Ihre App ordnungsgemäß bereitgestellt wurde, kopieren Sie die Swagger-URL aus der Azure Cloud Shell-Ausgabe, und fügen Sie sie in Ihren bevorzugten Browser ein. Im Browser sollten die Swagger-Benutzeroberfläche für die App angezeigt und die folgenden RESTful-Endpunkte deklariert werden:

    • api/weather/{latitude}/{longitude}: Gibt meteorologische Daten für den aktuellen Tag am angegebenen Breiten- und Längengrad zurück (als Werte vom Typ „double“).
    • api/weather/{Datum}/{Breitengrad}/{Längengrad}: Gibt die meteorologischen Daten für den angegebenen Tag (Datumswert) am angegebenen Breiten- und Längengrad zurück (als Werte vom Typ „double“).

    Swagger view.

  7. Kopieren Sie schließlich die Beispiel-URL aus der Azure Cloud Shell-Ausgabe, und speichern Sie sie. Hierbei handelt es sich um die Swagger-JSON-URL. Sie werden sie später in dieser Übung benötigen.

Bereitstellen eines API-Gateways

Erstellen Sie als nächsten Schritt in dieser Übung ein API-Gateway im Azure-Portal. In der nächsten Übung benötigen Sie dieses Gateway, um Ihre API zu veröffentlichen.

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im Azure-Ressourcenmenü oder auf der Startseite unter Azure-Dienste die Option Ressource erstellen aus. Der Bereich Ressource erstellen wird angezeigt.

  3. Wählen Sie im Ressourcenmenü die Option Integration und in den Ergebnissen dann API Management aus. Der Bereich API Management-Gateway installieren wird angezeigt.

  4. Füllen Sie auf der Registerkarte Grundlagen die folgenden Felder für jede Einstellung aus.

    Einstellung Wert
    Projektdetails
    Subscription Wählen Sie Ihr Abonnement aus.
    Resource group Wählen Sie eine neue oder vorhandene Ressourcengruppe aus. Eine Ressourcengruppe ist ein logischer Container, der zu einer Azure-Lösung gehörige Ressourcen enthält.
    Instanzendetails
    Region Wählen Sie eine verfügbare Region aus.
    Ressourcenname Geben Sie apim-WeatherData<random number> ein. Durch die Zufallszahl (random number) wird sichergestellt, dass der Name global eindeutig ist. Notieren Sie sich diesen Ressourcennamen. Dabei handelt es sich um den API-Gatewaynamen, den Sie später in dieser Übung benötigen.
    Arbeitsbereichname Geben Sie Weather-Company ein.
    Administrator-E-Mail-Adresse Die E-Mail-Adresse zum Empfangen aller Systembenachrichtigungen.
    Preisstufe
    Tarif Wählen Sie Consumption aus der Dropdownliste aus.
  5. Klicken Sie auf Überprüfen + erstellen, und klicken Sie dann auf Erstellen, sobald die Überprüfung vorbei ist.

    Hinweis

    Der Verbrauchstarif bietet eine schnelle Bereitstellung für Tests und verfügt über ein nutzungsbasiertes Preismodell. Die API-Verwaltungsoberfläche ist insgesamt ähnlich wie bei den anderen Tarifen.

Sie können den Fortschritt der Bereitstellung zusammen mit den Ressourcen anzeigen, die erstellt werden.

Importieren der API

Importieren Sie nach Abschluss der Bereitstellung mit den folgenden Schritten die Weather-API in das API Management-Gateway.

  1. Wählen Sie Zu Ressource wechseln aus. Der Bereich „Übersicht“ des API Management-Diensts für Ihre Ressource wird angezeigt.

  2. Wählen Sie im linken Menübereich unter APIs die Option APIs aus. Der Bereich APIs für Ihren API Management-Dienst wird mit Vorlagen zum Erstellen bzw. Anzeigen einer API angezeigt.

  3. Klicken Sie unter Create from definition (Aus Definition erstellen) auf OpenAPI. Das Dialogfeld Aus OpenAPI-Spezifikation erstellen wird angezeigt.

  4. Fügen Sie im Feld OpenAPI-Spezifikation die Swagger-JSON-URL ein, die Sie zuvor in dieser Übung gespeichert haben. Wenn Sie die EINGABETASTE drücken oder einen anderen Bereich des Dialogfelds auswählen, werden andere Felder für Sie aufgefüllt. Diese Daten werden aus der OpenAPI-Spezifikation importiert, die von Swagger erstellt wurde.

  5. Übernehmen Sie die Standardwerte für alle anderen Einstellungen, und wählen Sie dann Erstellen aus.

     Screenshot of dialog box with swagger.json url highlighted.

Auf der Registerkarte „Entwurf“ der „Weather Data“-API werden alle Vorgänge angezeigt, die aus zwei GET-Vorgängen bestehen.

Hinzufügen eines Abonnementschlüssels für den Zugriff auf die Wetter-API

Der letzte Schritt besteht darin, einen Abonnementschlüssel für die „Weather Data“-API hinzuzufügen.

  1. Wählen Sie im linken Menübereich unter APIs die Option Abonnements aus. Der Bereich Subscription (Abonnements) für Ihre API Management-Instanz wird angezeigt.

  2. Wählen Sie auf der Menüleiste oben Abonnement hinzufügen aus. Der Bereich Neues Abonnement wird angezeigt.

    Screenshot showing how to add a new subscription.

  3. Füllen Sie die folgenden Werte für jede Einstellung aus.

    Einstellung Wert
    Name weather-data-subscription
    `Display name` Weather Data Subscription
    Ablaufverfolgung zulassen Kein Häkchen
    `Scope` Klicken Sie in der Dropdownliste auf API.
    API Wählen Sie in der Dropdownliste WeatherData aus.
  4. Wählen Sie Erstellen aus. Im Bereich Abonnements werden zwei Abonnements aufgelistet, Built-in all-access subscription (Integriertes Abonnement mit Vollzugriff) und Ihr Weather Data Subscription (Wetterdatenabonnement).

  5. Wählen Sie am Ende der Zeile Weather Data Subscription (Wetterdatenabonnement) die Auslassungspunkte aus, und wählen Sie im Kontextmenü Shoe/hide keys (Schlüssel ein-/ausblenden) aus. Die Werte für den Primärschlüssel und den sekundären Schlüssel werden angezeigt.

  6. Kopieren Sie den Primärschlüssel aus dem Wetterdatenabonnement in Ihre Zwischenablage, und speichern Sie ihn in einer App wie Editor. Sie benötigen diesen Schlüssel im nächsten Schritt.

Testen des Abonnementschlüssels

Die API ist mit einem Schlüssel geschützt. Nun testen Sie die API ohne und mit dem Schlüssel, um den sicheren Zugriff zu veranschaulichen.

  1. Stellen Sie eine Anforderung, ohne einen Abonnementschlüssel zu übergeben. Führen Sie in Azure Cloud Shell den folgenden cURL-Befehl aus. Ersetzen Sie dabei den Platzhalter [Name des Gateways] durch den Ressourcennamen des API-Gateways (apim-WeatherDataNNNN), den Sie in der vorherigen Aufgabe erstellt haben.

    curl -X GET https://[Name Of Gateway].azure-api.net/api/Weather/53/-1
    

    Der Befehl enthält keinen Abonnementschlüssel und sollte den Fehler „401 – Zugriff verweigert“ zurückgeben, ähnlich wie im Folgenden gezeigt.

    { "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
    
  2. Führen Sie jetzt den folgenden Befehl aus. Ersetzen Sie dabei den Platzhalter [Name des Gateways] durch den Ressourcennamen des API-Gateways (apim-WeatherDataNNNN). Ersetzen Sie außerdem den Platzhalter Primärschlüssel durch den Primärschlüssel, den Sie im Schritt „Einblenden/Ausblenden“ kopiert haben.

    curl -X GET https://[Name Of Gateway].azure-api.net/api/Weather/53/-1 \
      -H 'Ocp-Apim-Subscription-Key: [Primary Key]'
    

    Wenn Sie das schließende Anführungszeichen eingeschlossen haben, sollte dieser Befehl zu einer erfolgreichen Antwort ähnlich dem folgenden Code führen.

    {"mainOutlook":{"temperature":32,"humidity":34},"wind":{"speed":11,"direction":239.0},"date":"2019-05-16T00:00:00+00:00","latitude":53.0,"longitude":-1.0}