Share via


Tutorial: Authentifizieren des Clients mit Spring Cloud Gateway in Azure Spring Apps

Hinweis

Die ersten 50 vCPU-Stunden und 100 GB Arbeitsspeicherstunden sind jeden Monat kostenlos. Weitere Informationen finden Sie unter Preissenkung – Azure Spring Apps leistet mehr und kostet weniger! im Apps in Azure-Blog.

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Standardverbrauch und dediziert (Vorschau)

In dieser Schnellstartanleitung erfahren Sie, wie Sie die Kommunikation zwischen einer Clientanwendung und einer Microserviceanwendung schützen, die in Azure Spring Apps gehostet und durch eine Spring Cloud Gateway-App abgeschirmt wird. Die Clientanwendung wird als Sicherheitsprinzipal verifiziert, um den Kontakt mit dem in Azure Spring Apps bereitgestellten Microservice initiieren. Dazu wird die mit Spring Cloud Gateway erstellte App verwendet. Diese Methode verwendet die Ressourcenserverfunktionen für die Tokenvermittlung und die Spring-Sicherheit von Spring Cloud Gateway für die Prozesse der Authentifizierung und Autorisierung, die durch die Ausführung des OAuth 2.0-Clientanmeldeinformationsflows realisiert werden.

Die folgende Liste zeigt die Zusammensetzung des Beispielprojekts:

  • Single-Page-Webanwendung „Books“: Diese lokal gehostete Single-Page-Webanwendung (SPA) interagiert mit dem Books-Microservice zum Hinzufügen oder Durchsuchen von Büchern.
  • Books-Microservice:
    • Eine Spring Cloud Gateway-App, die in Azure Spring Apps gehostet wird. Diese App fungiert als Gateway für die Books-RESTful-APIs.
    • Eine Spring Boot-RESTful-API-App, die in Azure Spring Apps gehostet wird. Diese App speichert die Buchinformationen in einer H2-Datenbank. Der Books-Dienst macht zwei REST-Endpunkte zum Schreiben und Lesen von Büchern verfügbar.

1. Voraussetzungen

2. Vorbereiten des Spring-Projekts

Führen Sie die folgenden Schritte aus, um die App zu klonen und lokal auszuführen:

  1. Verwenden Sie den folgenden Befehl, um das Beispielprojekt von GitHub zu klonen:

    git clone https://github.com/Azure-Samples/azure-spring-apps-sso-client-credential.git -b consumption-plan
    
  2. Verwenden Sie den folgenden Befehl, um die Books-Back-End-Dienste zu erstellen:

    cd azure-spring-apps-sso-client-credential
    ./mvnw clean package
    
  3. Geben Sie das SPA-Projektverzeichnis ein, und installieren Sie die Abhängigkeiten mit dem folgenden Befehl:

    npm install @azure/msal-node
    

3. Cloudumgebung vorbereiten

Die wichtigsten Ressourcen, die Sie zum Ausführen dieses Beispiels benötigen, sind eine Azure Spring Apps-Instanz und eine Azure Database for PostgreSQL-Instanz. Dieser Abschnitt beschreibt die Schritte zum Erstellen dieser Ressourcen.

3.1. Melden Sie sich auf dem Azure-Portal an.

Öffnen Sie Ihren Webbrowser, und navigieren Sie zum Azure-Portal. Geben Sie Ihre Anmeldeinformationen ein, um sich beim Azure-Portal anzumelden. Die Standardansicht ist Ihr Dienstdashboard.

3.2. Erstellen einer Azure Spring Apps-Instanz

Führen Sie die folgenden Schritte aus, um eine Dienstinstanz zu erstellen:

  1. Wählen Sie in der Ecke des Azure-Portals Ressource erstellen aus.

  2. Wählen Sie Compute>Azure Spring Apps aus.

    Screenshot of the Azure portal that shows the Create a resource page with Azure Spring Apps highlighted.

  3. Füllen Sie dann das Formular Grundlagen mit den folgenden Informationen aus:

    Einstellung Vorgeschlagener Wert BESCHREIBUNG
    Subscription Ihr Abonnementname Das Azure-Abonnement, das Sie für Ihren Server verwenden möchten. Falls Sie über mehrere Abonnements verfügen, wählen Sie das Abonnement aus, über das die Ressource abgerechnet werden soll.
    Resource group myresourcegroup Ein neuer Ressourcengruppenname oder ein bereits vorhandener Name aus Ihrem Abonnement
    Name myasa Ein eindeutiger Name, der Ihren Azure Spring Apps-Dienst identifiziert. Der Name muss zwischen 4 und 32 Zeichen lang sein und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten. Das erste Zeichen des Dienstnamens muss ein Buchstabe und das letzte Zeichen entweder ein Buchstabe oder eine Ziffer sein.
    Planen Standardverbrauch und dediziert (Preview) Der Tarif bestimmt die Ressourcen und Kosten, die mit Ihrer Instanz verbunden sind.
    Region Die Region, die Ihren Benutzern am nächsten liegt Der Standort, der Ihren Benutzern am nächsten ist.
    Container Apps-Umgebung myacaenv Wählen Sie aus, welche Container Apps-Umgebungsinstanz das gleiche virtuelle Netzwerk mit anderen Diensten und Ressourcen gemeinsam nutzen soll.

    Screenshot of the Azure portal that shows the Create Azure Spring Apps consumption plan page.

    Verwenden Sie die folgende Tabelle als Leitfaden, um die Container Apps-Umgebung zu erstellen:

    Einstellung Vorgeschlagener Wert Beschreibung
    Umgebungsname myacaenv Eindeutiger Name, der Ihren Azure Container Apps-Umgebungsdienst identifiziert
    Planen Verbrauch Der Tarif bestimmt die Ressourcen und Kosten, die mit Ihrer Instanz verbunden sind.
    Zonenredundant Deaktiviert Gibt an, ob Ihr Container Apps-Umgebungsdienst in einer Azure-Verfügbarkeitszone erstellt werden soll.

    Screenshot of the Azure portal that shows the Create Azure Container Apps page.

    Wichtig

    Das Verbrauchsworkloadprofil verwendet ein nutzungsbasiertes Abrechnungsmodell ohne Startkosten. Das dedizierte Workloadprofil wird Ihnen basierend auf den bereitgestellten Ressourcen in Rechnung gestellt. Weitere Informationen finden Sie unter Workloadprofile in Strukturumgebungen des Plans „Verbrauch und dediziert“ in Azure Container Apps (Vorschau) und Azure Spring Apps-Preis.

  4. Wählen Sie Überprüfen und erstellen aus, um ihre Auswahl zu überprüfen. Wählen Sie Erstellen aus, um die Azure Spring Apps-Instanz bereitzustellen.

  5. Klicken Sie auf der Symbolleiste auf das Symbol Benachrichtigungen (eine Glocke), um den Bereitstellungsprozess zu überwachen. Nach Abschluss der Bereitstellung können Sie An Dashboard anheften auswählen, wodurch auf Ihrem Azure-Portal-Dashboard eine Kachel für diesen Dienst erstellt wird, die als Verknüpfung zur Seite Übersicht des Diensts fungiert. Wählen Sie Zu Ressource wechseln aus, um die Seite Übersicht des Diensts zu öffnen.

    Screenshot of the Azure portal that shows the Overview page with the Notifications pane open.

  6. Verwenden Sie den folgenden Befehl, um Eureka Server zu aktivieren. Ersetzen Sie unbedingt die Platzhalter durch Ihre eigenen Werte, die Sie im vorherigen Schritt erstellt haben.

    az spring eureka-server enable \
        --resource-group <resource-group-name> \
        --name <Azure-Spring-Apps-instance-name>
    

3.3. Registrieren der Books-Anwendung

Dieser Abschnitt enthält die Schritte zum Registrieren einer Anwendung zum Hinzufügen von App-Rollen in Microsoft Entra ID, die zum Schutz der RESTful-APIs in Azure Spring Apps verwendet wird.

  1. Wechseln Sie zur Homepage des Azure-Portals.

  2. Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie den Filter Verzeichnis + Abonnement (), um den Mandanten auszuwählen, für den Sie eine Anwendung registrieren möchten.

  3. Suchen Sie nach Microsoft Entra ID, und wählen Sie diese Lösung aus.

  4. Wählen Sie unter Verwalten Folgendes aus: App-Registrierungen>Neue Registrierung.

  5. Geben Sie im Feld Name einen Namen für Ihre Anwendung ein, z. B. Books. Benutzern Ihrer App wird wahrscheinlich dieser Namen angezeigt. Sie können ihn später ändern.

  6. Wählen Sie für Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus.

  7. Wählen Sie Registrieren aus, um die Anwendung zu erstellen.

  8. Suchen Sie auf der Seite Übersicht für die App den Wert von Anwendungs-ID (Client) , und notieren Sie ihn zur späteren Verwendung. Sie benötigen diesen Wert, um die YAML-Konfigurationsdatei für dieses Projekt zu konfigurieren.

  9. Wählen Sie unter Verwalten die Option API verfügbar machen aus, suchen Sie am Anfang der Seite nach dem Anwendungs-ID-URI, und wählen Sie dann Hinzufügen aus.

  10. Übernehmen Sie auf der Seite Anwendungs-ID-URI bearbeiten den vorgeschlagenen Anwendungs-ID-URI (api://{client ID}), oder verwenden Sie anstelle der Client-ID einen aussagekräftigen Namen (etwa api://books), und wählen Sie dann Speichern aus.

  11. Wählen Sie unter Verwalten die Optionen App-Rollen>App-Rolle erstellen aus, und geben Sie dann die folgenden Informationen ein:

    • Geben Sie Schreiben für Anzeigename ein.
    • Wählen Sie unter Zulässige Mitgliedstypen die Option Anwendungen aus.
    • Geben Sie unter Wert den Wert Books.Write ein.
    • Geben Sie Bücher hinzufügen unter Beschreibung ein.
  12. Wiederholen Sie den vorherigen Schritt, um eine weitere App-Rolle hinzuzufügen: Books.Read.

    Screenshot of the Books app registration page that shows the App roles.

3.4. Registrieren der SPA

Die Books-RESTful-API-App fungiert als Ressourcenserver, der durch Microsoft Entra ID geschützt ist. Bevor Sie ein Zugriffstoken abrufen, müssen Sie eine andere Anwendung in Microsoft Entra ID registrieren und der Clientanwendung mit dem Namen SPA Berechtigungen erteilen.

  1. Wechseln Sie zurück zu Ihrem Mandanten in Microsoft Entra ID.

  2. Wählen Sie unter Verwalten Folgendes aus: App-Registrierungen>Neue Registrierung.

  3. Geben Sie im Feld Name einen Namen für Ihre Anwendung ein, z. B. SPA.

  4. Wählen Sie für Unterstützte Kontotypen die Standardoption Nur Konten in diesem Organisationsverzeichnis aus.

  5. Wählen Sie Registrieren aus, um die Anwendung zu erstellen.

  6. Suchen Sie auf der Seite Übersicht für die App den Wert von Anwendungs-ID (Client) , und notieren Sie ihn zur späteren Verwendung. Sie ist zum Abrufen eines Zugriffstokens erforderlich.

  7. Wählen Sie API-Berechtigungen>Berechtigung hinzufügen>Von meiner Organisation verwendete APIs aus. Wählen Sie die Books-Anwendung aus, die Sie zuvor registriert haben. Wählen Sie dann die Berechtigungen Books.Read und Books.Write und anschließend Berechtigungen hinzufügen aus.

  8. Wählen Sie Administratorzustimmung für <Name Ihres Mandanten> erteilen aus, um die Administratoreinwilligung für die hinzugefügten Berechtigungen zu erteilen.

    Screenshot of the SPA API permissions page that shows the API permissions of a web application.

  9. Wählen Sie Zertifikate und Geheimnisse und dann Neuer geheimer Clientschlüssel aus.

  10. Geben Sie auf der Seite Geheimen Clientschlüssel hinzufügen eine Beschreibung für das Geheimnis ein, und wählen Sie ein Ablaufdatum und anschließend Hinzufügen aus.

  11. Suchen Sie nach dem Wert des Geheimnisses, und notieren Sie ihn zur späteren Verwendung. Er ist zum Abrufen eines Zugriffstokens erforderlich.

3.5. Aktualisieren der Konfiguration der Books Service-App

Suchen Sie die Datei books-service/src/main/resources/application.yml für die books-service-App. Aktualisieren Sie die Konfiguration im Abschnitt spring.cloud.azure.active-directory, sodass sie folgendem Beispiel entspricht. Ersetzen Sie die Platzhalter unbedingt durch die Werte, die Sie zuvor erstellt haben.

spring:
  cloud:
    azure:
      active-directory:
        credential:
          client-id: <your-application-ID-of-Books>
        app-id-uri: <your-application-ID-URI-of-Books>

Verwenden Sie den folgenden Befehl, um das Beispielprojekt neu zu erstellen:

./mvnw clean package

4. Bereitstellen der Apps in Azure Spring Apps

Mit den folgenden Schritten wird veranschaulicht, wie Sie die Apps in Azure bereitstellen.

4.1. Bereitstellen der Microservice-Apps in Azure Spring Apps

Führen Sie die folgenden Schritte aus, um die Apps mithilfe des Maven-Plug-Ins für Azure Spring Apps in Azure Spring Apps bereitzustellen:

  1. Navigieren Sie zum Beispielprojektverzeichnis, und führen Sie den folgenden Befehl aus, um die App in Azure Spring Apps zu konfigurieren:

    ./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.18.0:config
    

    In der folgenden Liste werden die Befehlsinteraktionen beschrieben:

    • Wählen Sie die zu konfigurierenden untergeordneten Module (durch Komma getrennt eingeben, z. B. [1-2,4,6]; EINGABETASTE, um ALLE auszuwählen): Drücken Sie die EINGABETASTE, um alle auszuwählen.
    • OAuth2-Anmeldung: Autorisieren Sie die Anmeldung bei Azure basierend auf dem OAuth2-Protokoll.
    • Abonnement auswählen: Wählen Sie die Nummer der von Ihnen erstellten Azure Spring Apps-Instanz in der Abonnementliste aus, die standardmäßig das erste Abonnement in der Liste ist. Wenn Sie die Standardnummer verwenden, drücken Sie direkt die EINGABETASTE.
    • Auswählen von Azure Spring Apps für die Bereitstellung: Wählen Sie die Listennummer der von Ihnen erstellten Azure Spring Apps-Instanz aus. Wenn Sie die Standardnummer verwenden, drücken Sie direkt die EINGABETASTE.
    • Wählen Sie Apps aus, um den öffentlichen Zugriff verfügbar zu machen (durch Komma getrennt eingeben, z. B. [1-2,4,6]; EINGABETASTE, um KEINE auszuwählen): Geben Sie 1 für gateway-service ein.
    • Bestätigen Sie, dass alle oben genannten Konfigurationen (Y/n) gespeichert werden sollen: Geben Sie Y ein. Wenn Sie n eingeben, wird die Konfiguration nicht in den POM-Dateien gespeichert.
  2. Verwenden Sie den folgenden Befehl, um die App bereitzustellen:

    ./mvnw azure-spring-apps:deploy
    

    In der folgenden Liste wird die Befehlsinteraktion beschrieben:

    • OAuth2-Anmeldung: Sie müssen die Anmeldung bei Azure, basierend auf dem OAuth2-Protokoll, autorisieren.

    Nachdem der Befehl ausgeführt wurde, ersehen Sie aus den folgenden Protokollbenachrichtigungen, dass die Bereitstellung erfolgreich war:

    [INFO] Getting public url of app(gateway-service)...
    [INFO] Application url: https://gateway-service.xxxxxxxxxxxxxx-xxxxxxxx.eastasia.azurecontainerapps.io
    
    ...
    
    [INFO] Artifact(books-service-0.0.1-SNAPSHOT.jar) is uploaded and deployment(default) is successfully updated.
    
    ...
    

    Die ausgegebene Anwendungs-URL ist der Basisendpunkt für den Zugriff auf die ToDo-RESTful-API-Anwendung.

4.2. Lokales Ausführen der SPA-App

Aktualisieren Sie die Konfiguration in der Skriptdatei spa/server.js der SPA-Anwendung so, dass sie dem folgenden Beispiel entspricht. Ersetzen Sie unbedingt die Platzhalter durch Ihre eigenen Werte, die Sie im vorherigen Schritt erstellt haben.

const SpringCloudGatewayURL = "<URL exposed by app gateway-service>"

const msalConfig = {
    auth: {
        clientId: "< SPA App Registration ClientId>",
        authority: "https://login.microsoftonline.com/< TenantId >/",
        clientSecret: "<SPA App Registration ClientSecret>",
    },
};

const tokenRequest = {
    scopes: ["<Application ID URI of Books>/.default"]
};

Verwenden Sie im SPA-Projektverzeichnis den folgenden Befehl für die lokale Ausführung:

node server.js

Hinweis

Die SPA-App ist eine statische Webanwendung, die auf jedem Webserver bereitgestellt werden kann.

5. Überprüfen der App

Sie können auf die Books-SPA-App zugreifen, die mit den Books-RESTful-APIs über die gateway-service-App kommuniziert.

  1. Navigieren Sie in Ihrem Browser zu http://localhost:3000, um die App aufzurufen.

  2. Geben Sie Werte für Autor und Titel ein, und wählen Sie dann Buch hinzufügen aus. Die Antwort sieht in etwa wie hier dargestellt aus:

    Book added successfully: {"id":1,"author":"Jeff Black","title":"Spring In Action"}
    

6. Bereinigen von Ressourcen

Sie können die Azure-Ressourcengruppe einschließlich aller darin enthaltenen Ressourcen löschen. Führen Sie die folgenden Schritte aus, um die gesamte Ressourcengruppe zu löschen, einschließlich des neu erstellten Diensts:

  1. Navigieren Sie im Azure-Portal zu Ihrer Ressourcengruppe.

  2. Wählen Sie Ressourcengruppen und anschließend den Namen Ihrer Ressourcengruppe aus, z. B. myresourcegroup.

  3. Wählen Sie auf der Ressourcengruppenseite die Option Löschen aus. Geben Sie den Namen Ihrer Ressourcengruppe in das Textfeld ein, um das Löschen zu bestätigen.

  4. Klicken Sie auf Löschen.

7. Nächste Schritte

Weitere Informationen finden Sie in den folgenden Artikeln: