Freigeben über


Bereitstellen von Java Tomcat-Apps für Azure-App Service

In diesem Artikel erfahren Sie, wie Sie eine Tomcat-App mit der Anmeldung mit dem Microsoft Entra-Konto für Azure-App Dienst bereitstellen.

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

Voraussetzungen

Konfigurieren des Maven-Plug-Ins

Wenn Sie die Bereitstellung für Azure-App Dienst 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 Azure-App Dienstbetriebssystem, die Java-Version und die Tomcat-Version einrichten.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
    
  2. Drücken Sie für die Konfiguration "Neue Ausführung erstellen" Y, und drücken Sie dann die EINGABETASTE.

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

  4. Drücken Sie für "Define value for javaVersion" 2 für Java 11, und drücken Sie dann die EINGABETASTE.

  5. Drücken Sie für "Wert definieren" für "webContainer" 4 für Tomcat 9.0, und drücken Sie dann die EINGABETASTE.

  6. Drücken Sie zum Definieren des Werts für "pricingTier" die EINGABETASTE, um die standardebene P1v2 auszuwählen.

  7. Drücken Sie für "Bestätigen" Y, und drücken Sie dann die EINGABETASTE.

Das folgende Beispiel zeigt die Ausgabe 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 so zu konfigurieren, dass sie in Azure-App Dienst ausgeführt wird.

Der relevante Teil der pom.xml Datei 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 Ihrem pom.xml ändern. Einige gängige Konfigurationen sind in der folgenden Tabelle aufgeführt:

Eigenschaft Erforderlich Beschreibung
subscriptionId false Die Abonnement-ID.
resourceGroup true Die Azure-Ressourcengruppe für Ihre App.
appName true Der Name Ihrer App.
region false Die Region, in der Ihre App gehostet werden soll. Der Standardwert ist centralus. Gültige Regionen finden Sie unter "Unterstützte Regionen".
pricingTier false 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 false Die Laufzeitumgebungskonfiguration. Weitere Informationen finden Sie unter Konfigurationsdetails.
deployment false 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, die für Azure-App Dienst spezifisch sind, finden Sie unter Azure-App: Konfigurationsdetails.

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

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" Ihrer App, und ändern Sie den Wert der app.homePage bereitgestellten App Standard Name, wie im folgenden Beispiel gezeigt. Wenn Sie z. B. im vorherigen Schritt den App-Namen ausgewählt habenexample-domain, müssen Sie jetzt den app.homePage Wert verwendenhttps://example-domain.azurewebsites.net. Stellen Sie sicher, dass Sie das Protokoll auch von "in httphttps" 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 an Ihre bereitgestellte App in Azure-App Dienst ändert, müssen Sie auch den Umleitungs-URI in Ihrer Microsoft Entra ID-App-Registrierung ändern. Durchlaufen Sie folgende Schritte, um diese Änderung wirksam zu machen:

  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 , java-servlet-webapp-authenticationz. B. .

  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 im Abschnitt "Webumleitungs-URIs - " die Option "URI hinzufügen" aus.

  6. Füllen Sie den URI Ihrer App aus, https://<your-app-name>.azurewebsites.net/auth/redirectz. B. anfügen /auth/redirect .

  7. Wählen Sie Speichern.

Bereitstellen der App

Sie können Ihre App jetzt für Azure-App Dienst bereitstellen. 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 Key Vault zu verschieben und 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 dem Schlüsseltresor den geheimen Wert aad.secret als neuen geheimen Schlüssel hinzuzufügen:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. Jetzt müssen Sie Ihrer App Zugriff auf Ihren Schlüsseltresor gewähren. 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 diese Identität get und list Berechtigung für die geheimen Schlüssel in Ihrem Key Vault zu erteilen:

    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 einen Schlüsseltresorverweis auf den geheimen Schlüssel im Schlüsseltresor 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\Standard\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.

Weitere Informationen