Condividi tramite


Distribuire app Java Tomcat nel servizio app di Azure

Questo articolo illustra come distribuire un'app Tomcat con accesso da parte dell'account Microsoft Entra nel servizio app di Azure.

Questo articolo presuppone che sia stato completato uno degli articoli seguenti usando solo la scheda esegui localmente e si vuole ora eseguire la distribuzione in Azure. Queste istruzioni sono identiche a quelle nella scheda Deploy to Azure nei seguenti articoli:

Prerequisiti

Configurare il plug-in Maven

Quando si effettua il deployment nel Servizio App di Azure, la distribuzione usa automaticamente le credenziali di Azure dalla CLI di Azure. Se la CLI di Azure non è installata in locale, il plug-in Maven esegue l'autenticazione con OAuth o con accesso tramite dispositivo. Per ulteriori dettagli, vedere l'autenticazione con i plug-in di Maven .

Per configurare il plug-in, seguire questa procedura:

  1. Eseguire il comando seguente per configurare la distribuzione. Questo comando consente di configurare il sistema operativo del servizio app di Azure, la versione Java e la versione di Tomcat.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
    
  2. Per Crea nuova configurazione di esecuzione, premere Y, quindi premere INVIO.

  3. Per Definisci il valore del sistema operativo, premi 1 per Windows o 2 per Linux, quindi premi INVIO.

  4. Per Definisci valore per javaVersion, premi 2 per Java 11, quindi premi Invio.

  5. Per Definisci valore per webContainer, premere 4 per Tomcat 9.0, quindi premere INVIO.

  6. Per definire il valore per la fascia prezzo, premere Invio per selezionare il livello predefinito P1v2.

  7. Per Conferma, premere Y, quindi premere INVIO.

L'esempio seguente mostra l'output del processo di distribuzione:

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

Dopo aver confermato le scelte, il plug-in aggiunge l'elemento e le impostazioni del plug-in necessari al file di pom.xml del progetto per configurare l'app per l'esecuzione nel servizio app di Azure.

La parte pertinente del file pom.xml dovrebbe essere simile all'esempio seguente:

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

È possibile modificare le configurazioni di App Service direttamente nel pom.xml. Alcune configurazioni comuni sono elencate nella tabella seguente:

Proprietà Obbligatorio Descrizione
subscriptionId falso ID della sottoscrizione.
resourceGroup vero Gruppo di risorse di Azure per l'app.
appName vero Nome dell'app.
region falso Area in cui ospitare l'app. Il valore predefinito è centralus. Per le regioni valide, vedere regioni supportate.
pricingTier falso Piano tariffario per la tua app. Il valore predefinito è P1v2 per un carico di lavoro di produzione. Il valore minimo consigliato per lo sviluppo e il test Java è B2. Per ulteriori informazioni, vedere Prezzi di App Service.
runtime falso Configurazione dell'ambiente di runtime. Per altre informazioni, vedere Dettagli della configurazione.
deployment falso Configurazione della distribuzione. Per altre informazioni, vedere Dettagli della configurazione.

Per l'elenco completo delle configurazioni, vedere la documentazione di riferimento sul plug-in. Tutti i plug-in Azure Maven condividono un set comune di configurazioni. Per queste configurazioni, vedere Configurazioni comuni. Per le configurazioni specifiche del servizio App di Azure, vedere App di Azure: Dettagli di configurazione.

Assicurarsi di salvare i valori di appName e resourceGroup per usarli in seguito.

Preparare l'app per la distribuzione

Quando distribuisci la tua applicazione su App Service, l'URL di reindirizzamento cambia nell'URL di reindirizzamento dell'istanza dell'app distribuita. Usare la procedura seguente per modificare queste impostazioni nel file delle proprietà:

  1. Vai al file authentication.properties della tua app e modifica il valore di app.homePage con il nome di dominio dell'app distribuita, come illustrato nell'esempio seguente. Ad esempio, se si sceglie example-domain per il nome dell'app nel passaggio precedente, è ora necessario usare https://example-domain.azurewebsites.net per il valore app.homePage. Assicurarsi di aver modificato anche il protocollo da http a 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. Dopo aver salvato questo file, usare il comando seguente per ricompilare l'app:

    mvn clean package
    

Aggiornare la registrazione dell'app Microsoft Entra ID

Poiché l'URI di reindirizzamento cambia quando distribuisci la tua app nel servizio app di Azure, è anche necessario modificare l'URI di reindirizzamento nella registrazione dell'applicazione Microsoft Entra ID. Per apportare questa modifica, seguire questa procedura:

  1. Passare alla pagina Microsoft Identity Platform per sviluppatori Registrazioni app.

  2. Usare la casella di ricerca per cercare la registrazione dell’applicazione, ad esempio java-servlet-webapp-authentication.

  3. Aprire la registrazione dell'app selezionandone il nome.

  4. Selezionare Autenticazione dal menu.

  5. Nella sezione di Web - URI di reindirizzamento, selezionare Aggiungi URI.

  6. Compilare l'URI dell'app aggiungendo /auth/redirect, ad esempio https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Selezionare Salva.

Distribuire l'app

È ora possibile distribuire l'app nel servizio app di Azure. Usare il comando seguente per verificare l'accesso all'ambiente Azure al fine di eseguire la distribuzione:

az login

Con tutta la configurazione pronta nel file pom.xml, è ora possibile usare il comando seguente per distribuire l'app Java in Azure:

mvn package azure-webapp:deploy

Al termine della distribuzione, l'applicazione è pronta in http://<your-app-name>.azurewebsites.net/. Aprire l'URL con il Web browser locale, in cui verrà visualizzata la pagina iniziale dell'applicazione msal4j-servlet-auth.

Rimuovere i valori segreti

Il authentication.properties file dell'applicazione contiene attualmente il valore del segreto client nel parametro aad.secret. Non è consigliabile mantenere questo valore in questo file. Potresti anche correre un rischio se lo registri in un repository Git.

Come passaggio aggiuntivo per la sicurezza, è possibile archiviare questo valore in Azure Key Vault e usare riferimenti a Key Vault per renderlo disponibile nell'applicazione.

Usare la procedura seguente per spostare il valore di aad.secret in Key Vault e usarlo nel codice:

  1. Usare i comandi seguenti per creare un'istanza di Azure Key Vault:

    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. Usare i comandi seguenti per aggiungere il valore segreto aad.secret al proprio archivio di chiavi come nuovo segreto:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. È ora necessario concedere all'app l'accesso al Key Vault. Per eseguire questa attività, creare prima di tutto una nuova identità per l'app usando i comandi seguenti:

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. Usare i comandi seguenti per assegnare alle identità get e list i permessi sui segreti nel 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. Usare il comando seguente per creare un'impostazione dell'applicazione nell'app che usa un riferimento al segreto nel Key Vault. Questa impostazione rende il valore del segreto disponibile per l'app come variabile di ambiente.

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. Usare il codice seguente per caricare questo valore dalle variabili di ambiente. Nel file \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java, alla riga 41, sostituire l'istruzione corrente con la seguente riga:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. È ora possibile eliminare la chiave e il valore aad.secret dal file authentication.properties.

  8. Ricompilare il codice usando il comando seguente:

    mvn clean package
    
  9. Ridistribuire l'applicazione usando il comando seguente:

    mvn package azure-webapp:deploy
    

La distribuzione è stata completata.

Altre informazioni