Übung: Entfernen von Headerinformationen

Abgeschlossen

Unternehmen, die Web-APIs veröffentlichen, müssen häufig die HTTP-Header sorgfältig steuern, die ihre APIs zurückgeben, vorzugsweise ohne den API-Quellcode umschreiben zu müssen.

Die Regierung hat beschlossen, Erhebungsdaten mit ihren Behörden über RESTful-APIs zu teilen. Die kritischen Anforderungen bestehen darin, dass die Daten sicher freigegeben werden und problemlos geändert werden können, um eine schnelle Integration zu ermöglichen. Als leitender Entwickler sind Sie dafür zuständig, ein API-Gateway zu erstellen. Über das Gateway veröffentlichen Sie eine RESTful-Erhebungs-API, die einen OpenAPI-Endpunkt unter Verwendung moderner Sicherheitsstandards verfügbar macht.

Gehen Sie hier wie folgt vor:

  • Veröffentlichen Sie eine RESTful-Erhebungs-API.
  • Stellen Sie ein API Management-Gateway bereit.
  • Machen Sie die Erhebungs-API über den Gatewayendpunkt verfügbar.
  • Entfernen Sie einen Header aus der Antwort.

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 Erhebungs-Web-API

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

Sie führen zunächst ein Skript aus, durch das die RESTful-API in Azure gehostet wird, um Zeit zu sparen. Das Skript führt die folgenden Schritte aus:

  • Erstellen eines Azure App Service-Plans im Free-Tarif
  • Es erstellt eine 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
  • Es stellt unsere Web-API für unsere App Service-Instanz bereit.
  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 Befehl git clone in Cloud Shell aus, um das Repository, das die Quelle für Ihre Anwendung enthält, zu klonen:

    git clone https://github.com/MicrosoftDocs/mslearn-protect-apis-on-api-management.git
    
  4. Führen Sie den folgenden Befehl aus, um lokal zum Repositoryordner zu navigieren:

    cd mslearn-protect-apis-on-api-management
    
  5. Führen Sie das Skript „setup.sh“ aus, um die Test-API zu erstellen. Das Skript erstellt eine öffentliche Web-App, die eine OpenAPI-Schnittstelle verfügbar macht:

    bash setup.sh
    

    Die Ausführung des Skripts dauert ungefähr eine Minute. Nach Abschluss des Skripts werden zwei URLs angezeigt, die Sie zum Testen der App-Bereitstellung verwenden können. Beachten Sie, dass während der Bereitstellung alle Abhängigkeiten, die für die Ausführung der App erforderlich sind, automatisch für die App Service-Remoteinstanz installiert werden.

  6. Kopieren Sie die erste URL aus der Cloud Shell-Ausgabe, und fügen Sie sie in Ihren Browser ein, um zu testen, ob die App korrekt bereitgestellt wurde. Im Browser sollte die Swagger-Benutzeroberfläche für die App angezeigt und die folgenden RESTful-Endpunkte deklariert werden:

    • api/census (API/Erhebung): gibt eine Erhebung und zugehörige Personen zurück
    • api/census/{censusYear} (API/Erhebung/{censusYear}): gibt eine Erhebung und zugehörige Personen für das angegebene Jahr zurück
    • api/people/{reference} (API/Personen/{reference}): gibt ausführliche Informationen zu einer bestimmten Person zurück

    Screenshot of the Swagger page for the API, showing the RESTful endpoints.

  7. Kopieren Sie schließlich die letzte URL der Cloud Shell-Ausgabe. Diese URL ist die Swagger-JSON-URL, die Sie später in dieser Übung benötigen werden.

Bereitstellen eines API-Gateways

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

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im Menü des Azure-Portals oder auf der Startseite die Option Ressource erstellen aus. Der Bereich Ressource erstellen wird angezeigt.

  3. Wählen Sie im linken Menübereich Integration aus, und geben Sie dann API Management in das Suchfeld Suchdienste und Marketplace ein. Wählen Sie in den Ergebnissen die Karte API Management aus, und wählen Sie Erstellen aus, um den Bereich API Management-Dienst erstellen zu öffnen.

  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-CensusData<random number> ein und ersetzen Sie random number durch Ihre eigenen Zahlenreihe, um sicherzustellen, dass der Name global eindeutig ist.
    Name der Organisation Geben Sie Government-Census ein. Der Name Ihrer Organisation zur Verwendung im Entwicklerportal und in E-Mail-Benachrichtigungen. (Das Entwicklerportal und Benachrichtigungen sind nicht auf allen Dienstebenen verfügbar.)
    Administrator-E-Mail-Adresse Die E-Mail-Adresse zum Empfangen aller Systembenachrichtigungen.
    Preisstufe
    Tarif Wählen Sie Consumption (99.95% SLA) aus der Dropdownliste aus.

    Screenshot of the completed settings on the Basics tab of the Create API Management service screen.

    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.

  5. Klicken Sie auf Überprüfen + erstellen. Wenn die Überprüfung erfolgreich war, wählen Sie Erstellen aus. Die Bereitstellung kann einige Minuten dauern. Wenn die Bereitstellung abgeschlossen ist, wird die API Management-Instanz unter den Azure-Ressourcen aufgeführt. Wählen Sie Zu Ressource wechseln aus, um den Bereich für Ihren API Management-Dienst anzuzeigen.

Importieren der API

Importieren Sie nun die Erhebungs-API in das API Management-Gateway:

  1. Wählen Sie im linken Menübereich Ihrer API Management-Instanz unter APIs die Option APIs aus, und wählen Sie dann + API hinzufügen aus.

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

  3. Fügen Sie im Feld OpenAPI-Spezifikation die Swagger-JSON-URL ein, die Sie zuvor in dieser Übung gespeichert haben.

    Screenshot of the Create from OpenAPI specification dialog box with the swagger JSON URL entered.

    Hinweis

    Sie werden bemerken, dass wenn Sie das Feld mit der TAB-TASTE verlassen, einige der anderen Felder für Sie ausgefüllt werden. Der Grund dafür ist, dass Sie OpenAPI verwendet haben, das die meisten der erforderlichen Verbindungsdetails bereitstellt.

  4. Behalten Sie für die anderen Einstellungen die Standardwerte bei, und klicken Sie auf Erstellen.

Testen der API

Sehen wir uns an, welche Daten von der API standardmäßig zurückgegeben werden:

  1. Wählen Sie im Menü des Azure-Portals oder auf der Startseite die Option Alle Ressourcen und dann Ihre API Management-Instanz aus.

  2. Klicken Sie im linken Menübereich unter APIs auf APIs, und wählen Sie im mittleren Bereich Census Data (Census-Daten) aus.

  3. Klicken Sie in der oberen Menüleiste auf die Registerkarte Testen, und wählen Sie dann den Vorgang GetLatestCensus aus.

  4. Wählen Sie Send (Senden) aus.

    Screenshot of the test results for the GetLatestCensus operation, showing the default Response content.

  5. Beachten Sie, dass x-powered-by in der Antwort erscheint und angibt, dass das Framework ASP.NET ist.

Entfernen von Headern

Nun wird eine Richtlinie hinzugefügt, um den x-powered-by-Header aus den von der API gesendeten Antworten zu entfernen:

  1. Wählen Sie noch mal Census Data (Census-Daten) aus, und klicken Sie in der oberen Menüleiste auf die Registerkarte Design.

  2. Klicken Sie auf Alle Vorgänge und anschließend im Abschnitt Ausgehende Verarbeitung auf das Symbol </> . Der Richtlinien-XML-Editor wird angezeigt.

    Screenshot of the Design tab with the Policies icon highlighted in the Outbound processing section.

  3. Ersetzen Sie das <outbound>-Standardtag durch folgenden Code:

    <outbound>
       <set-header name="x-powered-by" exists-action="delete" />
       <base />
    </outbound>
    
  4. Wählen Sie Speichern aus.

Überprüfen von entfernten Headern

Sie sollten nun einen Test durchführen können, um zu überprüfen, ob die Header entfernt wurden:

  1. Wählen Sie noch mal Census Data (Census-Daten) aus, und klicken Sie in der oberen Menüleiste auf die Registerkarte Testen.

  2. Wählen Sie den Vorgang GetLatestCensus aus, und klicken Sie dann auf Senden.

    Screenshot of the test results for the GetLatestCensus operation, showing the headers removed in the Response.

  3. Der Header x-powered-by sollte nicht in der HTTP-Antwort enthalten sein.