Freigeben über


Bereitstellen von Java Tomcat-Apps in Azure App Service

In diesem Artikel erfahren Sie, wie Sie eine Tomcat-App mit der Anmeldung mit dem Microsoft Entra-Konto bei Azure App Service bereitstellen.

In diesem Artikel wird davon ausgegangen, dass Sie einen der folgenden Dokumente nur mit der Registerkarte "Lokal ausführen" abgeschlossen haben und jetzt in Azure deployen möchten. Diese Anweisungen entsprechen denen auf der Registerkarte Bereitstellen in Azure in diesen Artikeln:

Voraussetzungen

Konfigurieren des Maven-Plug-Ins

Wenn Sie azure App Service bereitstellen, verwendet die Bereitstellung automatisch Ihre Azure-Anmeldeinformationen aus der Azure CLI. Wenn die Azure CLI nicht lokal installiert ist, führt das Maven-Plug-In die Authentifizierung über OAuth oder die Geräteanmeldung durch. Weitere Informationen finden Sie unter Authentifizierung mit Maven-Plug-Ins.

Führen Sie die folgenden Schritte aus, um das Plug-In zu konfigurieren:

  1. Führen Sie den folgenden Befehl aus, um die Bereitstellung zu konfigurieren. Mit diesem Befehl können Sie das Betriebssystem Azure App Service, die Java-Version und die Tomcat-Version einrichten.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
    
  2. Drücken Sie für Neue Ausführungskonfiguration erstellen die Taste Y und dann die Eingabetaste.

  3. Drücken Sie zum Definieren des Werts für das Betriebssystem1 für Windows oder 2 für Linux, und drücken Sie dann die EINGABETASTE.

  4. Drücken Sie für Wert für javaVersion definieren die Taste 2 für Java 11 und dann die Eingabetaste.

  5. Drücken Sie für Wert definieren für webContainer die Taste 4 für Tomcat 9.0 und dann die Eingabetaste.

  6. Drücken Sie die EINGABETASTE, um den Wert für "pricingTier" zu definieren und die Standardebene P1v2 auszuwählen.

  7. Drücken Sie Bestätigen mit Y und dann Enter.

Das folgende Beispiel zeigt das Ergebnis des Bereitstellungsprozesses:

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------

Nachdem Sie Ihre Auswahl bestätigt haben, fügt das Plug-In das erforderliche Plug-In-Element und die Einstellungen zur pom.xml Datei Ihres Projekts hinzu, um Ihre App für die Ausführung in Azure App Service zu konfigurieren.

Der relevante Teil der dateipom.xml sollte dem folgenden Beispiel ähneln:

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

Sie können die Konfigurationen für App Service direkt in der Datei pom.xml ändern. Einige gängige Konfigurationen sind in der folgenden Tabelle aufgeführt:

Eigentum Erforderlich BESCHREIBUNG
subscriptionId Falsch Die Abonnement-ID.
resourceGroup Wahr Die Azure-Ressourcengruppe für Ihre App.
appName Wahr Der Name Ihrer App.
region Falsch Die Region, in der Ihre App gehostet werden soll. Der Standardwert ist centralus. Gültige Regionen finden Sie unter "Unterstützte Regionen".
pricingTier Falsch Das Preisniveau für Ihre App. Der Standardwert ist P1v2 für eine Produktionsauslastung. Der empfohlene Mindestwert für die Java-Entwicklung und -Tests ist B2. Weitere Informationen finden Sie unter App Service Pricing.
runtime Falsch Die Laufzeitumgebungskonfiguration. Weitere Informationen finden Sie unter Konfigurationsdetails.
deployment Falsch Die Bereitstellungskonfiguration. Weitere Informationen finden Sie unter Konfigurationsdetails.

Eine vollständige Liste der Konfigurationen finden Sie in der Dokumentation zur Plug-In-Referenz. Alle Azure Maven-Plug-Ins teilen einen gemeinsamen Satz von Konfigurationen. Informationen zu diesen Konfigurationen finden Sie unter "Allgemeine Konfigurationen". Konfigurationen speziell für Azure App Service finden Sie unter Azure App: Konfigurationsdetails.

Achten Sie darauf, die Werte für appName und resourceGroup für eine spätere Verwendung beiseite zu legen.

Vorbereiten der App für die Bereitstellung

Wenn Sie Ihre Anwendung im App-Dienst bereitstellen, ändert sich ihre Umleitungs-URL in die Umleitungs-URL Ihrer bereitgestellten App-Instanz. Führen Sie die folgenden Schritte aus, um diese Einstellungen in der Eigenschaftendatei zu ändern:

  1. Navigieren Sie zur Datei authentication.properties, und ändern Sie den Wert app.homePage des Domänennamens Ihrer bereitgestellten App hinzu, wie im folgenden Beispiel gezeigt. Wenn Sie z. B. im vorherigen Schritt example-domain als Ihren App-Namen ausgewählt haben, müssen Sie jetzt https://example-domain.azurewebsites.net für den app.homePage Wert verwenden. Stellen Sie sicher, dass Sie das Protokoll auch von http auf https geändert haben.

    # app.homePage is by default set to dev server address and app context path on the server
    # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net
    app.homePage=https://<your-app-name>.azurewebsites.net
    
  2. Verwenden Sie nach dem Speichern dieser Datei den folgenden Befehl, um Ihre App neu zu erstellen:

    mvn clean package
    

Aktualisieren Ihrer Microsoft Entra ID-App-Registrierung

Da sich der Umleitungs-URI für die App, die Sie für den Azure App Service bereitgestellt haben, ändert, müssen Sie auch den Umleitungs-URI in Ihrer Microsoft Entra ID-App-Registrierung ändern. Führen Sie die folgenden Schritte aus, um diese Änderung vorzunehmen:

  1. Navigieren Sie zur Seite App-Registrierungen von Microsoft Identity Platform für Entwickler.

  2. Verwenden Sie das Suchfeld, um nach Ihrer App-Registrierung zu suchen , z. B. java-servlet-webapp-authentication.

  3. Öffnen Sie die App-Registrierung, indem Sie den Namen auswählen.

  4. Wählen Sie im oberen Menü Authentifizierung aus.

  5. Wählen Sie unter Web - Umleitungs-URIs die Option URI hinzufügen aus.

  6. Tragen Sie die URI Ihrer App ein, indem Sie /auth/redirect anhängen – z. B. https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Wählen Sie Speichern aus.

Bereitstellen der App

Sie sind jetzt bereit, Ihre App für Azure App Service bereitzustellen. Verwenden Sie den folgenden Befehl, um sicherzustellen, dass Sie bei Ihrer Azure-Umgebung angemeldet sind, um die Bereitstellung auszuführen:

az login

Wenn alle Konfigurationen in Ihrer pom.xml-Datei bereit sind, können Sie jetzt den folgenden Befehl verwenden, um Ihre Java-App in Azure bereitzustellen:

mvn package azure-webapp:deploy

Nach Abschluss der Bereitstellung ist Ihre Anwendung bereit unter http://<your-app-name>.azurewebsites.net/. Öffnen Sie die URL mit Ihrem lokalen Webbrowser, in dem die Startseite der msal4j-servlet-auth Anwendung angezeigt werden soll.

Entfernen geheimer Werte

Die Datei "authentication.properties" der Anwendung enthält derzeit den Wert Ihres geheimen Clientschlüssels im aad.secret Parameter. Es empfiehlt sich nicht, diesen Wert in dieser Datei beizubehalten. Sie können auch ein Risiko eingehen, wenn Sie es auf ein Git-Repository übernehmen.

Als zusätzlicher Sicherheitsschritt können Sie diesen Wert in Azure Key Vault speichern und Key Vault-Verweise verwenden, um ihn in Ihrer Anwendung verfügbar zu machen.

Führen Sie die folgenden Schritte aus, um den Wert von aad.secret in den Key Vault zu übertragen und anschließend in Ihrem Code zu verwenden.

  1. Verwenden Sie die folgenden Befehle, um eine Azure Key Vault-Instanz zu erstellen:

    export RESOURCE_GROUP=<your-resource-group-name>
    export KEY_VAULT=<your-key-vault-name>
    az keyvault create \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT
    
  2. Verwenden Sie die folgenden Befehle, um den Secret-Wert aad.secret als neues Secret zu Ihrem Key Vault hinzuzufügen:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. Sie müssen nun Ihrer App Zugriff auf Ihren Key Vault geben. Erstellen Sie zunächst mithilfe der folgenden Befehle eine neue Identität für Ihre App:

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. Verwenden Sie die folgenden Befehle, um dieser Identität get und list Berechtigung auf die Secrets in Ihrem Key Vault zu geben:

    export IDENTITY=$(az webapp identity show \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --query principalId \
        --output tsv)
    az keyvault set-policy \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT \
        --secret-permissions get list \
        --object-id $IDENTITY
    
  5. Verwenden Sie den folgenden Befehl, um eine Anwendungseinstellung in Ihrer App zu erstellen, die eine Key Vault-Referenz auf das Geheimnis in Ihrem Key Vault verwendet. Mit dieser Einstellung wird der Wert des geheimen Schlüssels für Ihre App als Umgebungsvariable verfügbar.

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. Verwenden Sie den folgenden Code, um diesen Wert aus den Umgebungsvariablen zu laden. Ändern Sie in der Datei \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java in Zeile 41 die aktuelle Anweisung in die folgende Zeile:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. Sie können nun den aad.secret Schlüssel und Wert aus der Datei "authentication.properties " löschen.

  8. Erstellen Sie den Code mithilfe des folgenden Befehls neu:

    mvn clean package
    
  9. Stellen Sie die Anwendung mithilfe des folgenden Befehls erneut zur Bereitstellung vor:

    mvn package azure-webapp:deploy
    

Die Bereitstellung ist jetzt abgeschlossen.

Mehr Informationen