Condividi tramite


Distribuire app Java Tomcat nel servizio app Azure

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

Questo articolo presuppone che sia stato completato uno degli articoli seguenti usando solo la scheda Esegui localmente e si vuole eseguire la distribuzione in Azure. Queste istruzioni sono identiche a quelle della scheda Distribuisci in Azure negli articoli seguenti:

Prerequisiti

Configurare il plug-in Maven

Quando si esegue la distribuzione in app Azure Servizio, la distribuzione usa automaticamente le credenziali di Azure dall'interfaccia della riga di comando di Azure. Se l'interfaccia della riga di comando di Azure non è installata in locale, il plug-in Maven esegue l'autenticazione con OAuth o l'accesso del dispositivo. Per altre informazioni, vedere Autenticazione con i plug-in 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 Azure, la versione Java e la versione di Tomcat.

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

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

  4. Per Definisci valore per javaVersion, premere 2 per Java 11 e quindi premere INVIO.

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

  6. Per Definisci valore per pricingTier, premere INVIO per selezionare il livello P1v2 predefinito.

  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 in app Azure Servizio.

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 per servizio app direttamente nel pom.xml. Alcune configurazioni comuni sono elencate nella tabella seguente:

Proprietà Richiesto Descrizione
subscriptionId false ID della sottoscrizione.
resourceGroup true Gruppo di risorse di Azure per l'app.
appName true Nome dell'app.
region false Area in cui ospitare l'app. Il valore predefinito è centralus. Per le aree valide, vedere Aree supportate.
pricingTier false Piano tariffario per l'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 altre informazioni, vedere Prezzi di servizio app.
runtime false Configurazione dell'ambiente di runtime. Per altre informazioni, vedere Dettagli di configurazione.
deployment false Configurazione della distribuzione. Per altre informazioni, vedere Dettagli di 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 Azure, vedere App di Azure: Dettagli configurazione.

Assicurarsi di salvare i appName valori e resourceGroup per usarli in un secondo momento.

Preparare l'app per la distribuzione

Quando si distribuisce l'applicazione in servizio app, l'URL di reindirizzamento viene modificato nell'URL di reindirizzamento dell'istanza dell'app distribuita. Usare la procedura seguente per modificare queste impostazioni nel file delle proprietà:

  1. Passare al file authentication.properties dell'app e modificare il valore di app.homePage in base al 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 app.homePage valore . 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 nell'app distribuita in app Azure Servizio, è anche necessario modificare l'URI di reindirizzamento nella registrazione dell'app Microsoft Entra ID. Attenersi alla seguente procedura per apportare questa modifica:

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

  2. Usare la casella di ricerca per cercare la registrazione dell'app, java-servlet-webapp-authenticationad esempio .

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

  4. Seleziona Autenticazione dal menu.

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

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

  7. Seleziona Salva.

Distribuire l'app

È ora possibile distribuire l'app nel servizio app Azure. Usare il comando seguente per assicurarsi di aver eseguito l'accesso all'ambiente Azure per 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 dei segreti

Il file authentication.properties dell'applicazione contiene attualmente il valore del segreto client nel aad.secret parametro . Non è consigliabile mantenere questo valore in questo file. Se si esegue il commit in un repository Git, è anche possibile che si verifichi un rischio.

Come passaggio aggiuntivo per la sicurezza, è possibile archiviare questo valore in Azure Key Vault e usare i riferimenti all'insieme di credenziali delle chiavi 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 di all'insieme di credenziali delle aad.secret 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 all'insieme di credenziali delle chiavi. 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 questa identità get e list l'autorizzazione per i segreti nell'insieme di credenziali delle chiavi:

    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 all'insieme di credenziali delle chiavi al segreto nell'insieme di credenziali delle chiavi. 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, nella riga 41, modificare l'istruzione corrente con la riga seguente:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. È ora possibile eliminare la chiave e il aad.secret valore 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.

Ulteriori informazioni