Dela via


Distribuera Java Tomcat-appar till Azure App Service

Den här artikeln visar hur du distribuerar en Tomcat-app med inloggning av Microsoft Entra-konto till Azure App Service.

Den här artikeln förutsätter att du har slutfört någon av följande artiklar med hjälp av fliken Kör lokalt och att du nu vill distribuera till Azure. De här anvisningarna är desamma som på fliken Distribuera till Azure i följande artiklar:

Förutsättningar

Konfigurera Maven-plugin-programmet

När du distribuerar till Azure App Service använder distributionen automatiskt dina Azure-autentiseringsuppgifter från Azure CLI. Om Azure CLI inte installeras lokalt autentiseras Maven-plugin-programmet med OAuth eller enhetsinloggning. Mer information finns i autentisering med Maven-plugin-program.

Använd följande steg för att konfigurera plugin-programmet:

  1. Kör följande kommando för att konfigurera distributionen. Det här kommandot hjälper dig att konfigurera Azure App Service-operativsystemet, Java-versionen och Tomcat-versionen.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
    
  2. Tryck Y för Skapa ny körningskonfiguration och tryck sedan på Retur.

  3. För Definiera värde för operativsystem trycker du på 1 för Windows eller 2 för Linux och trycker sedan på Retur.

  4. För Definiera värde för javaVersion trycker du på 2 för Java 11 och trycker sedan på Retur.

  5. För Definiera värde för webContainer trycker du på 4 för Tomcat 9.0 och trycker sedan på Retur.

  6. För Definiera värde för pricingTier trycker du på Retur för att välja standardnivån P1v2 .

  7. Tryck Y för Bekräfta och tryck sedan på Retur.

I följande exempel visas utdata från distributionsprocessen:

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] ------------------------------------------------------------------------

När du har bekräftat dina val lägger plugin-programmet till det nödvändiga plugin-elementet och inställningarna i projektets pom.xml-fil för att konfigurera appen så att den körs i Azure App Service.

Den relevanta delen av pom.xml-filen bör se ut ungefär som i följande exempel:

<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>

Du kan ändra konfigurationerna för App Service direkt i pom.xml. Några vanliga konfigurationer visas i följande tabell:

Property Obligatoriskt Beskrivning
subscriptionId falskt Prenumerations-ID:t.
resourceGroup true Azure-resursgruppen för din app.
appName true Namnet på din app.
region falskt Den region där appen ska vara värd. Standardvärdet är centralus. Giltiga regioner finns i Regioner som stöds.
pricingTier falskt Prisnivån för din app. Standardvärdet är P1v2 för en produktionsarbetsbelastning. Det rekommenderade minimivärdet för Java-utveckling och -testning är B2. Mer information finns i Prissättning för App Service.
runtime falskt Konfigurationen av körningsmiljön. Mer information finns i Konfigurationsinformation.
deployment falskt Distributionskonfigurationen. Mer information finns i Konfigurationsinformation.

En fullständig lista över konfigurationer finns i referensdokumentationen för plugin-programmet. Alla Azure Maven-plugin-program delar en gemensam uppsättning konfigurationer. De här konfigurationerna finns i Vanliga konfigurationer. Konfigurationer som är specifika för Azure App Service finns i Azure-app: Konfigurationsinformation.

Se till att spara värdena appName och resourceGroup för senare användning.

Förbereda appen för distribution

När du distribuerar programmet till App Service ändras omdirigerings-URL:en till omdirigerings-URL:en för din distribuerade appinstans. Använd följande steg för att ändra de här inställningarna i egenskapsfilen:

  1. Navigera till appens authentication.properties-fil och ändra värdet app.homePage för till den distribuerade appens domännamn, som du ser i följande exempel. Om du till exempel valde example-domain för ditt appnamn i föregående steg måste du nu använda https://example-domain.azurewebsites.net för app.homePage värdet. Se till att du också har ändrat protokollet från http till https.

    # 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. När du har sparat den här filen använder du följande kommando för att återskapa din app:

    mvn clean package
    

Uppdatera din Microsoft Entra ID-appregistrering

Eftersom omdirigerings-URI:n ändras till din distribuerade app till Azure App Service måste du också ändra omdirigerings-URI:n i din Microsoft Entra ID-appregistrering. Gör den här ändringen med hjälp av följande steg:

  1. Gå till sidan Microsofts identitetsplattform för utvecklare Appregistreringar.

  2. Använd sökrutan för att söka efter din appregistrering – till exempel java-servlet-webapp-authentication.

  3. Öppna appregistreringen genom att välja dess namn.

  4. Markera Autentisering på kommandomenyn.

  5. I avsnittet Omdirigerings-URI:er för webben - väljer du Lägg till URI.

  6. Fyll i URI:n för din app och lägg till /auth/redirect – till exempel https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Välj Spara.

Distribuera appen

Nu är du redo att distribuera din app till Azure App Service. Använd följande kommando för att se till att du är inloggad i Azure-miljön för att köra distributionen:

az login

Med all konfiguration klar i din pom.xml-fil kan du nu använda följande kommando för att distribuera din Java-app till Azure:

mvn package azure-webapp:deploy

När distributionen är klar är programmet redo på http://<your-app-name>.azurewebsites.net/. Öppna URL:en med din lokala webbläsare, där du bör se programmets msal4j-servlet-auth startsida.

Ta bort hemliga värden

Filen authentication.properties för programmet innehåller för närvarande värdet för din klienthemlighet i parametern aad.secret . Det är inte bra att behålla det här värdet i den här filen. Du kan också ta en risk om du checkar in den på en Git-lagringsplats.

Som ett extra säkerhetssteg kan du lagra det här värdet i Azure Key Vault och använda Key Vault-referenser för att göra det tillgängligt i ditt program.

Använd följande steg för att flytta värdet aad.secret för till Key Vault och använda det i koden:

  1. Använd följande kommandon för att skapa en Azure Key Vault-instans:

    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. Använd följande kommandon för att lägga till det hemliga värdet för aad.secret i nyckelvalvet som en ny hemlighet:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. Nu måste du ge din app åtkomst till ditt nyckelvalv. Om du vill utföra den här uppgiften skapar du först en ny identitet för din app med hjälp av följande kommandon:

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. Använd följande kommandon för att ge den här identiteten get och list behörigheten för hemligheterna i ditt Key Vault:

    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. Använd följande kommando för att skapa en programinställning i din app som använder en nyckelvalvsreferens till hemligheten i ditt nyckelvalv. Den här inställningen gör hemlighetens värde tillgängligt för din app som en miljövariabel.

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. Använd följande kod för att läsa in det här värdet från miljövariablerna. Ändra den aktuella instruktionen till följande rad på rad 41 i filen \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java :

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. Nu kan du ta bort aad.secret nyckeln och värdet från filen authentication.properties .

  8. Återskapa koden med hjälp av följande kommando:

    mvn clean package
    
  9. Distribuera om programmet med hjälp av följande kommando:

    mvn package azure-webapp:deploy
    

Distributionen är nu klar.

Mer information