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:
- Abilitare l'accesso tramite autenticazione per le app Java JBoss EAP con Microsoft Entra ID
- Abilitare l'autenticazione per le app Java JBoss EAP usando MSAL4J con Azure Active Directory B2C
- Abilitare le app Java JBoss EAP per accedere agli utenti e accedere a Microsoft Graph
- Proteggere le app Java JBoss EAP utilizzando ruoli e autorizzazioni di ruolo
- Proteggere le applicazioni Java per JBoss EAP usando gruppi e claim di gruppo
Prerequisiti
Plug-in Maven per le applicazioni del servizio app Azure
Se Maven non è lo strumento di sviluppo preferito, vedere le esercitazioni simili seguenti che usano altri strumenti:
- IntelliJ IDEA
- Eclipse
- di Visual Studio Code
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:
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
Per Crea una nuova configurazione di esecuzione, premere Y, quindi premere INVIO.
Per Definisci valore per OS, premi 2 per Linux, quindi premi INVIO.
Per Definisci valore per javaVersion, premere 2 per Java 11, quindi premere INVIO.
Per Definisci valore per webContainer, premere 1 per JBosseap7, quindi premere INVIO.
Per definire il valore per il livello di prezzo, premi Invio per selezionare il livello predefinito P1v3.
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à:
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 sceglieexample-domain
per il nome dell'app nel passaggio precedente, è ora necessario usarehttps://example-domain.azurewebsites.net
per il valoreapp.homePage
. 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 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:
Passare alla pagina della piattaforma di identità Microsoft per sviluppatori Registrazioni app.
Usare la casella di ricerca per cercare la registrazione dell'applicazione, ad esempio
java-servlet-webapp-authentication
.Aprire la registrazione dell'app selezionandone il nome.
Selezionare Autenticazione dal menu.
Nella sezione URI di reindirizzamento di Web - , selezionare Aggiungi URI.
Compilare l'URI dell'app aggiungendo
/auth/redirect
, ad esempiohttps://<your-app-name>.azurewebsites.net/auth/redirect
.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:
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
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>"
È 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
Usare i comandi seguenti per assegnare a questa identità specifica
get
elist
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
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)'
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");
Ora puoi eliminare la chiave e il valore
aad.secret
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.
Altre informazioni
- Microsoft Authentication Library (MSAL) per Java
- Microsoft Identity Platform
- Guida introduttiva: Registrare un'applicazione con Microsoft Identity Platform
- Informazioni sulle esperienze di consenso dell'applicazione Microsoft Entra ID
- Comprendere il consenso dell'utente e dell'amministratore
- esempi di codice MSAL