Condividi tramite


Distribuire app Java JBoss EAP nel servizio app di Azure

Questo articolo illustra come distribuire un'app JBoss EAP con accesso tramite account Microsoft Entra su Azure App Service.

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

Prerequisiti

Configurare il plug-in Maven

Il processo di distribuzione su Azure App Service utilizza automaticamente le tue credenziali di Azure dall'interfaccia della riga di comando di Azure. Se la CLI di Azure non è installata in locale, il plug-in Maven esegue l'autenticazione tramite OAuth o tramite accesso del dispositivo. Per altre informazioni, vedere autenticazione con plug-in Maven.

Per configurare il plug-in, seguire questa procedura:

  1. Eseguire il comando Maven visualizzato accanto per configurare la distribuzione. Questo comando consente di configurare il sistema operativo del servizio app, la versione Java e la versione tomcat.

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

  3. Per Definisci valore per OS, premi 2 per Linux, quindi premi INVIO.

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

  5. Per Definisci valore per webContainer, premere 1 per JBosseap7, quindi premere INVIO.

  6. Per definire il valore per il livello di prezzo, premi Invio per selezionare il livello predefinito P1v3.

  7. Per confermare, premere Y, quindi premere Invio.

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

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------

Dopo aver confermato le scelte, il plug-in aggiunge la configurazione del plug-in e le impostazioni necessarie al file di pom.xml del progetto per configurare l'app per l'esecuzione in 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 per il servizio app direttamente nel pom.xml. Alcune configurazioni comuni sono elencate nella tabella seguente:

Proprietà Obbligatorio Descrizione Versione
schemaVersion falso Versione dello schema di configurazione. I valori supportati sono v1 e v2. 1.5.2
subscriptionId falso L'ID della sottoscrizione. 0.1.0+
resourceGroup vero Gruppo di risorse di Azure per l'app. 0.1.0+
appName vero Nome dell'app. 0.1.0+
region falso Area in cui ospitare l'app. Il valore predefinito è centralus. Per le regioni valide, vedere regioni supportate. 0.1.0+
pricingTier falso Il livello 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 del Servizio App 0.1.0+
runtime falso Configurazione dell'ambiente di runtime. Per altre informazioni, vedere Dettagli configurazione. 0.1.0+
deployment falso Configurazione della distribuzione. Per altre informazioni, vedere i dettagli della configurazione. 0.1.0+

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 di Azure App Service, 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 si distribuisce l'applicazione nel Servizio App, l'URL di reindirizzamento viene modificato in quello 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 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 nell'app distribuita nel servizio app di Azure, è anche necessario modificare l'URI di reindirizzamento nella registrazione dell'app Microsoft Entra ID. Per apportare questa modifica, seguire questa procedura:

  1. Passare alla pagina della piattaforma di identità Microsoft 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 URI di reindirizzamento di Web - , 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 assicurarsi di essere connessi all'ambiente di 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

Una volta completata la distribuzione, la tua applicazione è pronta a 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 file authentication.properties dell'applicazione contiene attualmente il valore del tuo segreto client nel parametro aad.secret. Non è consigliabile mantenere questo valore in questo file. Potresti anche correre un rischio se esegui il commit 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. Utilizzare i seguenti comandi per aggiungere il valore segreto aad.secret al key vault 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 a questa identità specifica get e list l'autorizzazione ai 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'app che usa un riferimento al key vault 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 riga seguente:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. Ora puoi 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