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:
- Abilitare l'accesso per le app Java Tomcat con Microsoft Entra ID
- Abilitare l'accesso per le app Java Tomcat usando MSAL4J con Azure Active Directory B2C
- Abilitare le app Java Tomcat per l'accesso degli utenti e l'accesso a Microsoft Graph
- Proteggere le app Tomcat Java usando ruoli e attestazioni di ruolo
- Proteggere le app Tomcat Java usando gruppi e attestazioni di gruppo
Prerequisiti
Plug-in Maven per app del servizio app Azure
Se Maven non è lo strumento di sviluppo preferito, vedere le esercitazioni simili seguenti che usano altri strumenti:
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:
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.13.0:config
Per Crea nuova configurazione di esecuzione, premere Y, quindi premere INVIO.
Per Definisci valore per il sistema operativo, premere 1 per Windows o 2 per Linux, quindi premere INVIO.
Per Definisci valore per javaVersion, premere 2 per Java 11 e quindi premere INVIO.
Per Definisci valore per webContainer, premere 4 per Tomcat 9.0, quindi premere INVIO.
Per Definisci valore per pricingTier, premere INVIO per selezionare il livello P1v2 predefinito.
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à:
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 sceglieexample-domain
per il nome dell'app nel passaggio precedente, è ora necessario usarehttps://example-domain.azurewebsites.net
per ilapp.homePage
valore . Assicurarsi di aver modificato anche il protocollo dahttp
ahttps
.# 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
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:
Passare alla pagina Registrazioni app di Microsoft Identity Platform per sviluppatori.
Usare la casella di ricerca per cercare la registrazione dell'app,
java-servlet-webapp-authentication
ad esempio .Aprire la registrazione dell'app selezionandone il nome.
Seleziona Autenticazione dal menu.
Nella sezione URI di reindirizzamento Web - selezionare Aggiungi URI.
Compilare l'URI dell'app, aggiungendo
/auth/redirect
, ad esempio .https://<your-app-name>.azurewebsites.net/auth/redirect
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:
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
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>"
È 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
Usare i comandi seguenti per assegnare questa identità
get
elist
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
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)'
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");
È ora possibile eliminare la chiave e il
aad.secret
valore dal file authentication.properties .Ricompilare il codice usando il comando seguente:
mvn clean package
Ridistribuire l'applicazione usando il comando seguente:
mvn package azure-webapp:deploy
La distribuzione è stata completata.
Ulteriori informazioni
- Microsoft Authentication Library (MSAL) per Java
- Microsoft Identity Platform (MICROSOFT Entra ID per sviluppatori)
- Guida introduttiva: Registrare un'applicazione con Microsoft Identity Platform
- Informazioni sulle esperienze di consenso dell'applicazione Microsoft Entra ID
- Informazioni sul consenso dell'utente e dell'amministratore
- Esempi di codice MSAL